Как изменить кодировку в HTTP-ответе в Java? - PullRequest
0 голосов
/ 17 мая 2019

Я отправляю запрос HTTP GET с помощью Java. Смотрите код ниже. Когда я разбираю ответ, немецкое «Умляуте» (например, ß, ä, ü) - это просто мусорные символы. Я знаю, это что-то про charset, но что именно я должен делать?

Это часть кода:

URL obj = new URL( urlAsString );
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
on.setRequestMethod( "GET" );

Нужно ли устанавливать специальное свойство запроса или что-то в этом роде? Или мне нужно как-то конвертировать результат?

Когда я вписываю «urlAsString» в адресную строку веб-браузера, я получаю идеальный результат, и все «Umlaute» верны.

спасибо за любую подсказку! Торстен

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Вы должны установить кодировку в части ответа, а не в части запроса, такой как

Content-Type: text/html; charset=utf-8

Эта часть должна быть правильной, поскольку вы сказали, что все в порядке, когда вы тестируете из браузера.

Теперь из клиентской части, то есть в вашей Java-программе, вы также должны установить заголовок Accept-Charset, который указывает серверу кодировку, которую вы можете принять.Например, для utf-8, затем iso-8859-1 вы можете добавить этот заголовок:

Accept-Charset: utf-8, iso-8859-1;q=0.5

Если это не работает, вы также можете попытаться прочитать байты из соединения, указав кодировку, напримерas:

DataOutputStream ds = new DataOutputStream(con.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(ds, "UTF-8"));

Возможно, проблема в том, что вы не показываете эту часть в опубликованном коде.

0 голосов
/ 17 мая 2019

Можете ли вы попробовать ниже, как это?Здесь вы можете установить тип содержимого и кодировку набора символов для utf-8.

 URL obj = new URL( urlAsString );
 HttpURLConnection con = (HttpURLConnection) obj.openConnection();
 con.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
 on.setRequestMethod( "GET" );

Я предлагаю использовать Apache Http Client для лучшего использования и гибкости.

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