2011-03-02 1 views
8

J'utilise JAX-RS pour créer un service Web (repos) qui renvoie les résultats au format JSON.Encodage JAX-RS

Tout est OK, sauf le codage.

Par exemple, je reçois:

..., parameter:"Dep\u00f3sitos" ,... 

Au lieu de:

..., parameter:"Depósitos" ,... 

J'ai essayé d'utiliser:

@Produces("application/json; charset=UTF-8") 

mais le problème reste. Si je le renvoie en XML en utilisant simplement:

@Produces("application/xml") 

Tout est ok.

De quoi ai-je besoin pour définir le bon type?

+0

Pouvez-vous modifier votre question d'inclure le code réel de votre méthode JSON –

Répondre

1

je me suis retrouvé à l'aide GSON au lieu de JSON4J d'IBM qui se sont révélées être beaucoup mieux à la manipulation sérialisation de classe Java personnalisée .

0

Tout ce que vous avez besoin est ceci:

String back = "Depósitos"; 
return new String(back.getBytes(), "UTF8"); 
+0

est useles? s et code dangereux. 'String.getBytes()' convertit la chaîne au codage par défaut de la plate-forme. Disons que vous êtes sur Windows, donc cela pourrait être par "CP1252". Ensuite, vous créez un nouvel objet String à partir de ces octets et dites à Java que les octets doivent être interprétés comme 'UTF-8', même si les octets sont du texte' CP1252' dans cet exemple, ce qui entraînera des problèmes. En outre: 'back' est déjà une chaîne, les objets Java String peuvent être vus comme du texte sans encodage (ils sont codés avec' UTF-16' en interne, mais cela n'a pas d'importance). Les codages deviennent importants uniquement lorsqu'une chaîne est convertie en octets. – Sky