Webページのチャーセットを検出し、ページコンテンツを取得する方法は?
質問
フォローコードを使用してページコンテンツを取得します。
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」ですが、システムのデフォルトのcharSetは「GBK」です。したがって、これらのコードは正しく入力できません。
私は知っています、私は入力ストリームリーダーコンストラクターにcharsetnameを書くことができます:
new InputStreamReader(url.openConnection().getInputStream(),"UTF-8")
大丈夫ですが、知りたいです:
Charsetを検出し、ページコンテンツを取得する方法は? (2つのリクエストをより良く送信しないでください)
Javaライブラリはこれを行うことができますか? (Webページのコンテンツを取得し、CharSetNameを設定する必要はありません)
手伝ってくれてありがとう :)
解決
適切なチャーセットを検出する簡単な方法は本当にありません。あなたが興味のあるWebページが、 <meta charset="utf-8">
鬼ごっこ。そのタグを検出すると、解析のcharsetを切り替えることができます。
たとえば、チャーセットを検出する努力をするライブラリもいくつかあります http://jchardet.sourceforge.net/.
所属していません StackOverflow