Я настроил 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 и сервером (сделанные китайскими парнями btw), не выровнены. Но я не знаю, какой из них виноват, поскольку администраторы сервера утверждают, что они поддерживают UTF-8, а наш клиент для отдыха настроен на поддержку UTF-8.
Это заставило меня задуматься над тем, какую кодировку Android использует по умолчанию для всего ввода текста, и если ее можно изменить на другую программно. Я попытался найти ресурсы о том, как это сделать на входных виджетах, но я не нашел ничего полезного.
Есть ли способ установить кодировку для всех входных виджетах в Android? Или, может быть, я пропустил что-то в конфигурации остальных клиентов? Или, может быть, возможно, серверные чуваки не используют UTF-8 на своих серверах и вместо этого используют кодировки Windows?