[英]How do I get parsed HTML special characters using JSOUP
我正在使用JSoup從網頁獲取H1標簽值,該標簽包含以下HTML。
己基β-D-吡喃葡萄糖苷
當我使用.text()方法時,我得到以下信息。 (請注意?),我認為這是因為它無法計算出“β”字符的HTML。 如何獲得在網頁上呈現的值。
己基β-D-吡喃葡萄糖苷
提取想要的文字后,是否需要進行某種轉換?
這是我的代碼。
String check = "<title>Hexyl β-D-glucopyranoside ≥98.0% (TLC) | ≥ ≥</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 β-D-glucopyranoside ≥98.0% (TLC) | ≥ ≥</title>
</head>
<body></body>
</html>
您正在使用的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對象,並且從這里可以使用所需的字符集。 也許可以以更直接的方式來完成。 但這有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.