如何检测WebPage charset,并获取页面内容?

时间:2010-08-23 05:30:46

标签: java java-io

我使用以下代码来获取页面内容:

URL url=new URL("http://www.google.com.hk/intl/zh-CN/privacy.html");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
for(String line=reader.readLine();line!=null;line=reader.readLine()){
    System.out.println(line);
}
reader.close();

页面:http://www.google.com.hk/intl/zh-CN/privacy.html charset是“UTF-8”,但我的系统默认字符集是“GBK”,因此,这些代码无法正确输入。

我知道,我可以在InputStreamReader构造函数中编写一个charsetname:

new InputStreamReader(url.openConnection().getInputStream(),"UTF-8")

它会好的,但我想知道:

如何检测charset,并获取页面内容? (不要更好地发送两个请求)

任何java库都可以这样做吗? (获取网页内容,不需要设置charsetname)

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

确实没有简单的方法来检测正确的字符集。您可以希望您感兴趣的网页使用<meta charset="utf-8">标记声明charset。当您检测到该标记时,您可以切换解析的字符集。

还有一些库会努力检测字符集,例如http://jchardet.sourceforge.net/