2012-04-04 29 views

cevap

39

Jackson otomatik olarak kaynak kullanılan kodlama algılar: JSON şartnamesine göre, yalnızca geçerli kodlamaları UTF-8, UTF-16 ve UTF-32 bulunmaktadır. Başka hiçbir kodlama (Latin-1 gibi) kullanılamaz. Bu nedenle, otomatik algılama kolay ve ayrıştırıcı tarafından yapılır - bu nedenle kodlama tespiti kabul edilmez. Yani, giriş UTF-8 ise, bu şekilde algılanır.

Çıkış için UTF-8 varsayılan değerdir; ancak açıkça başka bir kodlamayı kullanmak isterseniz, JsonGenerator'u (JsonEncoding alan bir yöntemle) oluşturabilir ve bunu ObjectMapper'a geçirebilirsiniz.

Her iki durumda da alternatif olarak, java.io.Reader/java.io.Writer'u manuel olarak oluşturabilir ve istediğiniz herhangi bir kodlamayı kullanabilirsiniz.

+1

UTF-8'in UTF-8 yerine UTF-8 olarak kodlanmasını sağlamak için saatler harcadığım zaman UTF-8'in nasıl varsayılan olabileceğinden emin değilim. – cbmanica

+3

@cbmanica Güven bana, "java.io.OutputStream" verdiğinizde UTF-8 Jackson için mutlak varsayılandır. Ancak başka varsayılanlar da var: JDK'nın kendi "Writer" örneğini oluşturmayı seçtiyseniz veya başka bir lib/framework'ü yapması durumunda varsayılan kodlaması var. Bunlar Jackson'ın dışında. – StaxMan

+0

@cbmanica Lütfen, size yardımcı olan kodunuzu paylaşabilir misiniz? Aynı konuya sahip gibi görünüyor. – Tregoreg