Как узнать, использует ли мой HTTP-запрос UTF-8? - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь исправить проблему в приложении для Android. Приложение отправляет HTTP-запрос в веб-сервис. Когда текст в запросе содержит шведские символы Å, Å и Ö, это не работает. Люди, у которых есть веб-сервис, говорят, что это потому, что запрос должен быть закодирован в UTF-8, а они говорят, что это не так.

Приложение использует org.apache.http.impl.client.DefaultHttpClient, и я предполагаю, что в этой строке сказано, что следует использовать UTF-8: HttpProtocolParams.setContentCharset (params, "UTF-8");

Я использовал Wireshark, чтобы увидеть, что приложение отправляет, и строка «TeståäöÅÄÖéüà» отображается как: "Test \ 345 \ 344 \ 366 \ 305 \ 304 \ 326 \ 351 \ 374 \ 340"

Я обнаружил по этой таблице , что числа являются восьмеричным представлением "кодовой точки Unicode" для символов. Это что-то еще, кроме UTF-8, верно?

Это так, что если бы это был UTF-8, специальные символы были бы представлены двумя байтами, например, «c3 a5» для «å» и «c3 a4» для «ä»?

Итак:
1. Правильно ли я понимаю это с Unicode против UTF-8?
2. Прав ли я в том, что отправляемое НЕ в кодировке UTF-8?
3. Как мне сделать отправку DefaultHttpClient в UTF-8?

Jon

1 Ответ

2 голосов
/ 11 мая 2011

Как указал Стивен, вы должны различать кодировку, используемую в заголовке http (для URL) и теле запроса.

В любом случае, различие не между Unicode и UTF-8, UTF-8 - одна из кодировок кодировки для UNICODE (UTF-16 - другая).

И вы, по-видимому, используете не Юникод, а старую Latin1 (ISO 8859-1): один байт для каждого символа.Просто бывает, что первые 128 кодовых точек Unicode (примерно) совпадают с позициями, используемыми Latin1.

Сделайте себе одолжение и прочитайте основы о Unicode , это займет у вас одну или дведни, это очень ценные и необходимые знания для любого программиста сегодня (и завтра).

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