ObjectMapper ne gère Pas Correctement l'UTF-8?
Je suis en utilisant ObjectMapper pour sérialiser des postes dans mon système en json. Ces messages contiennent des entrées de tous les coins du monde et contiennent des caractères utf-8. Le problème est que le ObjectMapper ne semble pas être de la manipulation de ces caractères correctement. Par exemple, la chaîne "Musée d'Orsay" est sérialisée "Mus?©e d Orsay".
Voici mon code qui fait la sérialisation:
public static String toJson(List<Post> posts) {
ObjectMapper objectMapper = new ObjectMapper()
.configure(Feature.USE_ANNOTATIONS, true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
objectMapper.writeValue(out, posts);
} catch (JsonGenerationException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
return new String(out.toByteArray());
}
Il est intéressant de noter exactement le même List<Post> posts
est sérialisée pour le mieux quand je le retourner par l'intermédiaire d'un gestionnaire de requêtes à l'aide de @ResponseBody en utilisant la configuration suivante:
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
ObjectMapper m = new ObjectMapper()
.enable(Feature.USE_ANNOTATIONS)
.disable(Feature.FAIL_ON_UNKNOWN_PROPERTIES);
MappingJacksonHttpMessageConverter c = new MappingJacksonHttpMessageConverter();
c.setObjectMapper(m);
converters.add(c);
super.configureMessageConverters(converters);
}
Toute aide grandement appréciée!
Je pense que vous devriez mettre à jour cette question, car le problème n'est PAS dans ObjectMapper.
OriginalL'auteur threejeez | 2012-08-11
Vous devez vous connecter pour publier un commentaire.
Côté de conversions, le sujet de la simplification du processus d':
qui accélère le processus (pas besoin d'aller de POJO d'octets à la matrice de décodage de char à créer une Chaîne) ainsi que (surtout) raccourcit le code.
OriginalL'auteur StaxMan
Pas 10 minutes plus tard et j'ai trouvé le problème. Le problème n'était pas avec l'ObjectMapper, c'était avec la façon dont j'ai été le tournant de la ByteArrayOutputStream dans une chaîne. J'ai modifié le code comme suit et tout a commencé à travailler:
OriginalL'auteur threejeez