使用HttpClient时如何使用指定的charset编码读取HTTP响应头

时间:2015-04-30 09:48:38

标签: java character-encoding http-headers httpclient

响应标题中有一个中文单词。我必须使用UTF-8字符编码读取标头。但我不知道如何在httpclient中设置此编码。如何告诉它哪个字符编码用于标题?

2 个答案:

答案 0 :(得分:0)

如果您正在使用Apache HttpClient,则在使用String

将回复转换为getResponseBodyAsString时必须小心谨慎
  

如果已知响应是String,则可以使用   getResponseBodyAsString方法会自动使用   如果没有,则在Content-Type标头或ISO-8859-1中指定编码   charset已指定。

查看更多详情here

答案 1 :(得分:0)

RFC 7230,HTTP标准,notes

  

历史上,HTTP允许字段内容包含文本      ISO-8859-1 charset,仅支持其他charset      通过使用RFC2047编码。在实践中,大多数HTTP标头      字段值仅使用US-ASCII字符集的子集。      新定义的标题字段应该将其字段值限制为      US-ASCII八位字节。收件人应该在字段中处理其他八位字节      内容(obs-text)为不透明数据。

那么,你如何知道标题字段是用UTF-8编码的?我猜测服务器没有使用RFC2047编码标头值。在这种情况下,您的客户端程序不应该尝试将标头值解释为UTF-8文本,而应将其视为不透明数据。