2

JSoup を使用して Web ページから H1 タグの値を取得しています。このタグには次の HTML が含まれています。

ヘキシル β-D-グルコピラノシド

.text() メソッドを使用すると、次のようになります。(注意?) これは「β」の文字のHTMLがうまくいかないからだと思います。Web ページにレンダリングされたこの値を取得するにはどうすればよいですか。

ヘキシル α-D-グルコピラノシド


必要なテキストを取得した後、何らかの変換を行う必要がありますか?

これが私のコードです。

        String check = "<title>Hexyl &#946;-D-glucopyranoside &#8805;98.0% (TLC) | &#8805; &#8805;</title>";
        Document doc3 = Jsoup.parse(check);
        doc3.outputSettings().escapeMode(Entities.EscapeMode.base); // default

        doc3.outputSettings().charset("UTF-8");
        System.out.println("UTF-8: " + doc3.html());
        //doc3.outputSettings().charset("ISO 8859-1");
        doc3.outputSettings().charset("ASCII");
        System.out.println("ASCII: " + doc3.html());`

-----コンソールでの出力-----

    UTF-8: <html>
    <head>
    <title>Hexyl ?-D-glucopyranoside ?98.0% (TLC) | ? ? </title>
     </head>
    <body></body>
   </html>
   ASCII: <html>
    <head>
    <title>Hexyl &#946;-D-glucopyranoside &#8805;98.0% (TLC) | &#8805; &#8805;</title>
     </head>
    <body></body>
    </html>
4

2 に答える 2

3

使用している IDE が間違った文字エンコーディングを使用しているようです。

私が実行したので、コードとは関係ありませんが、問題ありません(奇妙な文字を出力します)。Eclipse を使用している場合は、その特定のプロジェクトの実行構成設定に移動し、[共通] タブをクリックしてから UTF-8 を選択します。

于 2012-05-22T09:43:05.703 に答える
1

ドキュメントを解析した後に文字セットを設定するには遅すぎます。私はかつて同じ問題を抱えていました。あなたのやり方でやろうとしましたが、悲惨に失敗しました。

これは私のために働いた:

String url = "url to html page";
InputStream is is =new URL(url).openStream();
org.jsoup.nodes.Document doc = org.jsoup.Jsoup.parse(is , "ISO-8859-2", url);

文字列としてのみ html テキストがある場合は、最初にそれを InputString に変換します ( http://www.kodejava.org/examples/265.html )

InputStream is = new ByteArrayInputStream(text.getBytes("UTF-8"));

次に、正しい文字セットで読み取ります。

BufferedReaderr = new BufferedReader(new InputStreamReader(is, "UTF-8"), 4*1024);
StringBuilder total = new StringBuilder();
String line = "";
while ((line = r.readLine()) != null) {
     total.append(line);
}
r.close();
is.close();
String html = total.toString();

...そして解析:

doc = org.jsoup.Jsoup.parse(html);

重要なことは、どういうわけか InputStream オブジェクトを取得することです。ここから、目的の文字セットを使用する方法があります。多分それはもっと簡単な方法で行うことができます。しかし、それは機能します。

于 2012-05-29T08:24:46.790 に答える