2012-04-04 10 views

risposta

39

Jackson rileva automaticamente codifica utilizzata in source: secondo la specifica JSON, codifiche solo validi sono UTF-8, UTF-16 e UTF-32. Non è possibile utilizzare altre codifiche (come Latin-1). A causa di ciò, il rilevamento automatico è facile e fatto dal parser - nessun rilevamento di codifica è accettato per questo motivo. Quindi, se l'input è UTF-8, verrà rilevato come tale.

Per l'output, UTF-8 è l'impostazione predefinita; ma se si desidera utilizzare esplicitamente un'altra codifica, è possibile creare esplicitamente JsonGenerator (con un metodo che prende JsonEncoding) e passarlo a ObjectMapper.

In alternativa, in entrambi i casi, è possibile creare manualmente manualmente java.io.Reader/java.io.Writer e utilizzare qualsiasi codifica desiderata.

+1

Non sono sicuro di come UTF-8 può essere l'impostazione predefinita, quando ho trascorso ore a cercare di ottenere la codifica JSON in UTF-8 anziché UTF-16. – cbmanica

+3

@cbmanica Fidati di me, UTF-8 è l'impostazione predefinita assoluta di Jackson quando si consegna 'java.io.OutputStream'. Ma ci sono altri valori di default: JDK ha la sua codifica predefinita se si sceglie di costruire l'istanza di 'Writer' da soli, o qualche altro lib/framework lo fa. Questi sono fuori da Jackson. – StaxMan

+0

@cbmanica Potresti, per favore, condividere il tuo codice che ti ha aiutato? Sembra che abbia lo stesso problema. – Tregoreg

Problemi correlati