2012-04-04 14 views

Respuesta

39

Jackson detecta automáticamente codificación utilizada en fuente: según la especificación JSON, codificaciones válidas sólo son UTF-8, UTF-16 y UTF-32. No se pueden usar otras codificaciones (como Latin-1). Debido a esto, la autodetección es fácil y la realiza el analizador sintáctico; por este motivo, no se acepta la detección de codificación. Por lo tanto, si la entrada es UTF-8, se detectará como tal.

Para la salida, UTF-8 es el predeterminado; pero si explícitamente desea usar otra codificación, puede crear JsonGenerator explícitamente (con un método que toma JsonEncoding) y pasarlo a ObjectMapper.

Alternativamente, en ambos casos, puede construir manualmente java.io.Reader/java.io.Writer, y hacer que utilice la codificación que desee.

+1

No estoy seguro de cómo UTF-8 puede ser el predeterminado, cuando he pasado horas tratando de obtener JSON codificado en UTF-8 en lugar de UTF-16. – cbmanica

+3

@cbmanica Confía en mí, UTF-8 es el valor predeterminado absoluto para Jackson cuando le das 'java.io.OutputStream'. Pero hay otros valores predeterminados: JDK tiene su codificación predeterminada si elige construir la instancia 'Writer' usted mismo, o alguna otra lib/framework lo hace. Estos están fuera de Jackson. – StaxMan

+0

@cbmanica ¿Podría compartir el código que lo ayudó? Parece que tengo el mismo problema. – Tregoreg

Cuestiones relacionadas