Ja sam nie byłem w stanie znaleźć odpowiedzi. Czy istnieje sposób, aby powiedzieć jacksonowi, aby używał kodowania UTF-8 podczas używania ObjectMapper do serializacji i deserializacji obiektów?Jackson ObjectMapper z kodowaniem UTF-8?
Dzięki
Ja sam nie byłem w stanie znaleźć odpowiedzi. Czy istnieje sposób, aby powiedzieć jacksonowi, aby używał kodowania UTF-8 podczas używania ObjectMapper do serializacji i deserializacji obiektów?Jackson ObjectMapper z kodowaniem UTF-8?
Dzięki
Jackson automatycznie wykrywa kodowania stosowany w źródle: zgodnie ze specyfikacją JSON ważne wyłącznie kodowania są UTF-8 UTF-16 i UTF-32. Nie można używać innych kodowań (takich jak Latin-1). Z tego powodu automatyczne wykrywanie jest łatwe i wykonywane przez analizator składni - z tego powodu nie jest akceptowane wykrywanie kodowania. Tak więc, jeśli wejście jest UTF-8, zostanie wykryte jako takie.
W przypadku wyjścia, UTF-8 jest domyślny; ale jeśli wyraźnie chcesz użyć innego kodowania, możesz jawnie utworzyć JsonGenerator
(metodą, która zajmuje JsonEncoding
) i przekazać to do ObjectMapper
.
Alternatywnie w obu przypadkach można oczywiście ręcznie skonstruować java.io.Reader
/java.io.Writer
i zastosować kodowanie, które chcesz.
Nie jestem pewien, w jaki sposób UTF-8 może być domyślny, kiedy spędziłem wiele godzin próbując uzyskać kodowanie JSON w UTF-8 zamiast UTF-16. – cbmanica
@ cbmanica Zaufaj mi, UTF-8 jest absolutnym domyślnym dla Jacksona, gdy podasz 'java.io.OutputStream'. Ale są też inne ustawienia domyślne: JDK ma domyślne kodowanie, jeśli sam tworzysz instancję 'Writer' lub robi to inne lib/framework. Są na zewnątrz Jacksona. – StaxMan
@ cbmanica Czy mógłbyś podzielić się swoim kodem, który ci pomógł? Wygląda na to, że mam ten sam problem. – Tregoreg