Проблема кодирования компонентов HTTP - PullRequest
1 голос
/ 27 июня 2011

При использовании HTTP-компонентов (java-библиотека для http) полученный ответ ' отображается как Æ, а - отображается как ȗ.

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Хорошо, поэтому в основном вы получаете ответ без Content-Type от сервера, которым вы не управляете, и у вас возникают проблемы с кодированием.

В java каждая строка внутренне обрабатывается как Строки Unicode , несмотря на формат, в который они входят.

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

Консоль будет использовать кодировку по умолчанию для печати там символов.В моей машине, например, MacRoman, а не utf-8.

Так что вам нужно получить необработанные байты из ответа и сделать что-то вроде этого:

System.out.println(new String(raw_byte_array, "utf-8"));

Также, это может пролить свет на этот вопрос:

http://download.oracle.com/javase/tutorial/i18n/text/string.html

0 голосов
/ 01 апреля 2015

В последней версии 4.x вы будете использовать что-то вроде ниже, чтобы быть независимым от Charset -

HttpEntity entity = response.getEntity();
Charset charset = ContentType.getOrDefault(entity).getCharset();
...