获取响应获取或发布请求的响应字符集

Arv*_*ind 6 java http httpclient http-headers

我正在java web应用程序中提取响应字符集,我正在使用Apache HTTP Client.

例如,从"Content-Type"标题获得的一个可能值是

    text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

然后我的代码将在"="符号后提取所有文本...

所以提取的字符集将是

    UTF-8
Run Code Online (Sandbox Code Playgroud)

我只是想知道,上面获取响应字符集的方法是否正确?或者是否存在上述代码不起作用的情况?这里有什么我想念的吗?

for*_*two 8

httpclient(或http核心)是否已经提供了该功能?像这样的东西:

HttpResponse response = ...
String charset = EntityUtils.getContentCharSet(response.getEntity());
Run Code Online (Sandbox Code Playgroud)

  • `@Deprecated` 在最近的 apache httpClient 版本中。最新答案是 [this](/sf/answers/2399736671/)。 (3认同)

Ich*_*ang 7

由四十二提供的方法可以工作.但该方法已弃用,我发现该网站有一个很好的查找字符集的方法示例.

HttpEntity entity = response.getEntity();
ContentType contentType = ContentType.getOrDefault(entity);
Charset charset = contentType.getCharset();
System.out.println("Charset  = " + charset.toString());
Run Code Online (Sandbox Code Playgroud)