如何使用JSOUP解析HTML特殊字符

问题描述:

我使用JSoup从网页获取H1标记值,该标记包含以下HTML。如何使用JSOUP解析HTML特殊字符

己基β-d-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> 
+1

如果页面使用UTF-8编码,那么您需要确保您正在以UTF-8格式阅读它。 – pap

+0

更新了原始帖子以显示我的代码。 – Thinkpad

看起来像您所用的使用了错误的字符编码的IDE。

这与您的代码无关,因为我已经运行了它并没有问题(输出奇怪的字符)。如果您使用的是Eclipse,请转到该特定项目的运行配置设置,然后单击“常用”选项卡,然后选择UTF-8。

解析文档后设置字符集为时已晚。我曾经遇到过同样的问题,试图按照你的方式去做,并且失败了。

这为我工作:

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对象,并从这里有方法来使用它所需的字符集。也许它可以以更加直接的方式完成。但它的工作。