我使用以下代码来获取页面内容:
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)
感谢您的帮助:)
答案 0 :(得分:1)
确实没有简单的方法来检测正确的字符集。您可以希望您感兴趣的网页使用<meta charset="utf-8">
标记声明charset。当您检测到该标记时,您可以切换解析的字符集。
还有一些库会努力检测字符集,例如http://jchardet.sourceforge.net/。