Кодирование JSON для поддержки символов UTF-8 в приложении для Android

Я пытаюсь отобразить символ utf-8 в ListView в своем приложении для Android, но появляется ряд вопросительных знаков????? Вот как выглядит результат:

[{"ImageID":"1","ItemID":"Item1","ItemID_AM":"????
???","ImagePath":"http:\/\/10.0.2.2\/android\/Pagination\/pics\/pic_a.png"},{"ImageID":"2","ItemID":"Item2","ItemID_AM":"????
????","ImagePath":"http:\/\/10.0.2.2\/android\/Pagination\/pics\/pic_b.png"},...

Я уже использовал: header('content-type: application/json; charset=utf-8'); Но ничего не изменилось. Может кто-нибудь помочь, пожалуйста?

Спасибо.


person B3738    schedule 04.10.2013    source источник
comment
Действительно ли ваше представление списка отображает JSON? Или это ввод JSON, который вы показываете в своем вопросе? Пожалуйста, используйте fiddler или аналогичный инструмент для захвата переданных данных JSON и добавления их к вашему вопросу. И, пожалуйста, добавьте код для запроса данных и разбора JSON.   -  person Codo    schedule 04.10.2013
comment
Не могли бы вы попытаться показать полный JSON в вашем textView, ваш JSON может быть неправильно закодирован в utf-8. Если ваши данные поступают из БД, попробуйте следующее: mysql_set_charset('utf8',$dbLink);   -  person A.S.    schedule 04.10.2013
comment
У меня есть база данных, и я использовал php для преобразования результатов в формат json, а затем я хочу, чтобы она отображалась в моем Android ListView.   -  person B3738    schedule 04.10.2013
comment
Итак, контрольный список должен выглядеть так: 1.) Кодировка вашего TEXT/VARCHAR = utf-8? 2. mysql_set_charset('utf8',$dbLink); ? 3. php-код сохранен как кодировка utf8   -  person A.S.    schedule 04.10.2013
comment
Но в базе данных mysql все символы отображаются правильно, но когда я просматриваю ее в json, ну знак вопроса???? появляется. Таким образом, вопросительный знак также отображается в моем Android ListView, потому что это то, что он получает от json.   -  person B3738    schedule 04.10.2013
comment
Что происходит, когда вы загружаете JSON в браузере?   -  person Alastair McCormack    schedule 07.10.2013
comment
Аластер МакКормак отображает ряд вопросительных знаков. В результате он также отображает вопросительный знак в моем Android ListView.   -  person B3738    schedule 08.10.2013
comment
См. stackoverflow.com/questions/19362095/   -  person Alastair McCormack    schedule 15.10.2013


Ответы (1)


Строки Java используют Unicode, а строки JSON имеют кодировку UTF-8. Скорее всего, вы должны преобразовать JSON UTF-8 в Unicode.

Поиск: java string utf8, например Как преобразовать строки в байтовые массивы UTF8 и из них в Java

Однако самым простым способом было бы позволить соответствующей библиотеке JSON выполнить декодирование. Возможно, org.json — Android или Как анализировать JSON в Android поможет.

Обновление:

Возможно, все в порядке, просто шрифт не способен отображать нужные символы. В этом случае решением проблемы будет установка соответствующего шрифта.

person Olaf Dietsche    schedule 08.10.2013
comment
Хорошо, Олаф, я посмотрю. - person B3738; 09.10.2013
comment
что такое кодировка строк Java? Каждый юникод должен быть закодирован, чтобы его можно было хранить в памяти. - person Jai Pandit; 05.08.2016
comment
См. раздел Oracle — Class String. Строка представляет строка в формате UTF-16.... Также есть Oracle — Представления символов Unicode Тип данных char ... основан на исходной спецификации Unicode, которая определяет символы как 16-битные объекты фиксированной ширины. Stackoverflow также имеет довольно много вопросов по этому вопросу, stackoverflow.com/search?q=java+string+internal +представление - person Olaf Dietsche; 05.08.2016