JsonReader неправильно конвертирует символы Юникода

#java #android #json #gson

#java #Android #json #gson

Вопрос:

Я создаю приложение для Android, и у меня есть данные JSON, которые содержат строки Юникода. При получении данных и использовании InputStreamReader для их анализа строки Юникода остаются в порядке. Однако, когда я использую JsonReader для анализа JSON, он, похоже, преобразовал его в некоторый формат. Я просмотрел исходный код, и не похоже, что он делает что-то необычное (очевидно, я могу что-то упустить) — он просто берет строку и сохраняет ее в строковую переменную. У кого-нибудь есть идеи о том, почему мои строки в Юникоде преобразуются неправильно?

Спасибо

Комментарии:

1. Покажите нам код: что вы используете в качестве входных данных для JsonReader ? Как вы создаете InputStreamReader ? Вы где-нибудь указываете кодировку? Как он преобразуется неправильно? Какие входные данные? Каков результат?

Ответ №1:

Вы можете декодировать свой поток в строку, используя InputStreamReader и указав свою кодировку (например, UTF-8 или Unicode), затем передать свою строку JSONObject или JSONArray создать такой объект.

 JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
  

Справочные документы:

Комментарии:

1. IIRC кодировка называется «UTF-8» (с тире).