Java 如何检测网页字符集,获取网页内容?

Java 如何检测网页字符集,获取网页内容?,java,java-io,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.rea

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

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();
页面:字符集是“UTF-8”,但我的系统默认字符集是“GBK”,因此,这些代码无法正确键入

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

new InputStreamReader(url.openConnection().getInputStream(),"UTF-8")
没关系,但我想知道:

如何检测字符集并获取页面内容?(最好不要发送两个请求)

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


感谢您的帮助:)

检测正确的字符集真的很难。您可以希望感兴趣的网页使用
标记声明字符集。当检测到该标记时,可以切换解析的字符集


例如,还有一些库致力于检测字符集。

要检测正确的字符集,确实没有简单的方法。您可以希望感兴趣的网页使用
标记声明字符集。当检测到该标记时,可以切换解析的字符集

例如,还有一些库致力于检测字符集