2

我正在使用 JSoup 从网页中获取 H1 标签值,该标签包含以下 HTML。

己基β-D-吡喃葡萄糖苷

当我使用 .text() 方法时,我得到以下信息。(注意?)我认为这是因为它无法计算出“β”字符的 HTML。我如何获得在网页上呈现的这个值。

己基 α-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 回答