Кодировка по умолчанию Android при отправке http post / put - Проблемы со специальными символами

Я настроил apache httpClient следующим образом:

HttpProtocolParams.setContentCharset(httpParameters, "UTF-8");
HttpProtocolParams.setHttpElementCharset(httpParameters, "UTF-8");

Я также включаю http-заголовок «Content-Type: application / json; charset = UTF-8» для всех HTTP-сообщений и запросов на размещение .

Я пытаюсь отправить HTTP-запросы post / put с телом json, содержащим специальные символы (например, китайские символы через клавиатуру Google Pinyin, символы и т. Д.). Эти символы отображаются в журналах как тарабарщина, но я думаю, что это связано с тем, что DDMS не поддерживает UTF-8, как описано в , эта проблема.

Проблема в том, что когда сервер получает запрос, он иногда вообще не видит символы (особенно китайские символы ), или он становится бессмысленным мусором, когда мы получаем его с помощью запроса GET.

Я также пробовал поместить 250 символов, отличных от ascii, в одно поле, потому что это конкретное поле должно иметь до 250 символов. Однако он не может пройти проверку на стороне сервера, которая утверждает, что ограничение в 250 символов было превышено. 250 символов ASCII работают нормально.

Серверные парни утверждают, что они поддерживают UTF-8. Они даже попытались смоделировать почтовый запрос, содержащий китайские иероглифы, и данные были получены сервером без проблем. Однако этот парень (китаец) использует компьютер под управлением Windows с установленным китайским языковым пакетом (я думаю, потому что он может печатать китайские символы на своей клавиатуре).

Я предполагаю, что кодировки, используемые Android клиент и сервер (сделанный китайскими парнями, кстати) не согласованы. Но я не знаю, кто из них виноват, поскольку парни с сервера утверждают, что они поддерживают UTF-8, а наш клиент для отдыха настроен на поддержку UTF-8.

Это заставило меня задуматься, какую кодировку Android использует по умолчанию для всех ввод текста, и если он может быть изменен на другой программно. Я попытался найти ресурсы о том, как это сделать для виджетов ввода, но не нашел ничего полезного.

Есть ли способ установить кодировку для всех виджетов ввода в Android? А может я что-то упустил в остальной конфигурации клиента? Или, может быть, парни с сервера не используют UTF-8 на своих серверах, а вместо этого используют кодировки Windows?

18
задан Makoto 20 May 2012 в 20:54
поделиться