Webページのチャーセットを検出し、ページコンテンツを取得する方法は?

StackOverflow https://stackoverflow.com/questions/3544953

  •  30-09-2019
  •  | 
  •  

質問

フォローコードを使用してページコンテンツを取得します。

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/.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top