EditText возвращает улучшенный ISO-8859-1 вместо кодировки UTF-8 для немецких умлаутов? - PullRequest
3 голосов
/ 17 октября 2011

Я больше, чем просто запутался.У меня действительно есть некоторый EditText, и он, очевидно, возвращает ISO-8859-1 или даже смешанные строки 8859-1 + UTF8.

До сих пор я понимал, что Android полностью UTF-8, так что это не можетдаже случается.

Примеры: ввод "wüste" в EditText.Строка в шестнадцатеричный код возвращает этот байт-код: 57 fc 73 74 65, я ожидал бы: 57 c3bc 73 74 65

Ввод "wüste テ ス ト" возвращает 57 fc 73 74 65 20 30c6 30b9 30c8, который теперь дажеэто смесь расширенных 8859-1 и UTF-8.

Это ожидаемое и желаемое поведение?Могу ли я изменить это где-нибудь?Я осознал это при отправке данных с использованием JSON на сервер, и это помогло из-за недопустимых символов UTF-8.

С уважением, Оливер

1 Ответ

10 голосов
/ 17 октября 2011

Java (и, следовательно, Android) строки - это не UTF-8, а UTF-16 .Отображаемые байты являются кодовыми точками Unicode.

Вам необходимо преобразовать вашу строку в UTF-8, чтобы отправить ее как таковую (либо напрямую, либо через любую библиотеку JSON, которую вы можете использовать).Это можно сделать, вызвав getBytes("UTF8") в вашей строке, чтобы получить байтовый массив со строкой в ​​нужной кодировке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...