получение набора символов ответа для получения или отправки запроса - PullRequest
6 голосов
/ 02 февраля 2012

Я работаю над извлечением кодировки ответа в веб-приложении java, где я использую Apache HTTP Client.

Например, одним из возможных значений, полученных из заголовка «Content-Type», является

    text/html; charset=UTF-8

Тогда мой код будет извлекать весь текст после знака "=" ...

Таким образом, извлеченная кодировка будет

    UTF-8

Я просто хотел знать, правильный ли приведенный выше метод для получения кодировки ответа? Или есть сценарий, где приведенный выше код не будет работать? Я что-то упускаю здесь?

Ответы [ 3 ]

8 голосов
/ 02 февраля 2012

Разве httpclient (или ядро ​​http) уже не предоставляет такую ​​функциональность?Как то так:

HttpResponse response = ...
String charset = EntityUtils.getContentCharSet(response.getEntity());
7 голосов
/ 15 декабря 2015

Метод, предоставленный сорока двумя, может работать.Но метод устарел, я обнаружил, что у этого веб-сайта есть хороший пример метода поиска кодировки.

HttpEntity entity = response.getEntity();
ContentType contentType = ContentType.getOrDefault(entity);
Charset charset = contentType.getCharset();
System.out.println("Charset  = " + charset.toString());
3 голосов
/ 02 февраля 2012

Что ж, этот подход потерпит неудачу, когда

  1. значение кодировки указано
  2. , когда в указанном значении используются экранированные значения
  3. , когда есть параметры, отличные от "charset""
...