кодировка символов преобразования джексона и пружинной загрузки - PullRequest
0 голосов
/ 29 мая 2018

Как я понял из RFC, JSON всегда UTF - *.

У меня есть служба Spring REST, которая получает данные JSON от клиента.Но в моей системе все ниже по потоку - ISO-8859-1.В том числе хранение данных в базе данных.

Как я могу настроить Джексона так, чтобы запрос - ответ при создании всегда изменялся с UTF-8 на ISO-8859-1 при получении запроса и ISO-8859-1 на UTF-8 при отправке ответа.

Обновление:

Чтобы дать четкое представление о моей проблеме.

  1. Чтение файла в формате ISO-8859-1.

  2. Извлечение данных и создание объекта JSON в UTF-8 (с использованием Джексона)

  3. Получение данных UTF-8 и сохранение в базе данных (может бытьв UTF-8)

  4. Отправить эти данные UTF-8 в другой плоский файл в ISO-8859-1

Большинство данных,хотя он в UTF-8, он содержит только подмножество ISO-8859-1 (1 байт)

Мой вопрос: я использую Spring-boot-rest на сервере.

Feign - HTTP-клиент Apache на клиенте.

Для шага 2, существует ли более чистый способ преобразования данных ISO-8859-1 в UTF-8, чтобы все данные / любые вызываемые API-данные правильно преобразовывались в UTF-8

Во-вторыхдля шага 4 при создании файла, если данные, хранящиеся в БД, имеют формат UTF-8, как убедиться, что он правильно преобразовывает данные при отправке.

1 Ответ

0 голосов
/ 29 мая 2018

Кажется, существует неправильное представление о том, где применяются кодировки символов.В описываемой вами среде одна сторона - это REST для Java, другая - это Java для базы данных (и, возможно, другие вещи, которые вы называете downstream ).

REST to Java : запросы и ответы REST обычно находятся в UTF-8.В Java у вас просто есть экземпляры класса Java String .Они скрывают внутреннюю кодировку (начиная с Java 10 они даже используют две разные кодировки). Но снаружи они выглядят как цепочка символов или кодовые точки Unicode.Джексон заботится о преобразовании между UTF-8 и экземплярами Java String .

Java в базу данных : большинство интерфейсов базы данных также принимают Java String экземпляры.Они будут использовать некоторую кодировку при передаче данных в базу данных.Но вам не нужно заботиться об этом.База данных об этом позаботится.

Итак, краткий рассказ : проблема не существует.Конфигурация кодировки символов для Джексона не требуется.

Кодировки символов могут иметь значение для вас, если вы записываете данные в текстовый файл.Но это не связано с Джексоном.

...