HTTP组件编码问题

时间:2011-06-27 15:39:42

标签: java character-encoding apache-httpcomponents

使用HTTP Components(用于http的java库)时,我得到的响应'显示为Æ-显示为ȗ

2 个答案:

答案 0 :(得分:1)

好的,所以基本上你从没有控制权的服务器那里得到没有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

答案 1 :(得分:0)

使用最新版本4.x,您将使用类似下面的内容与Charset无关 -

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