1

次のコードを使用してページのコンテンツを取得します。

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文字セットは「UTF-8」ですが、システムのデフォルトの文字セットは「GBK」であるため、これらのコードは正しく入力できません.

私は知っています、私はInputStreamReaderコンストラクターで文字セット名を書くことができます:

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

それは大丈夫ですが、私は知りたいです:

文字セットを検出し、ページ コンテンツを取得する方法は? (2 つのリクエストを送信しないほうがよい)

どのJavaライブラリでもこれを行うことができますか? (ウェブページのコンテンツを取得し、文字セット名を設定する必要はありません)

手伝ってくれてありがとう :)

4

1 に答える 1

1

適切な文字セットを検出する簡単な方法は実際にはありません。関心のある Web ページが<meta charset="utf-8">タグを使用して文字セットを宣言していることを期待できます。そのタグを検出すると、解析の文字セットを切り替えることができます。

http://jchardet.sourceforge.net/など、文字セットを検出しようとするライブラリもいくつかあります。

于 2010-08-23T07:34:36.457 に答える