Java Jsoup以不同的方式解析某些字符
我尝试使用Jsoup解析此html文件:Java Jsoup以不同的方式解析某些字符,java,html,jsoup,Java,Html,Jsoup,我尝试使用Jsoup解析此html文件: <html><body>Maître Corbeau, sur un arbre perché</body></html> 当我尝试打印文档时: System.out.println(document.toString()); 两项产出: <html> <head></head> <body> Maître Corbeau, sur u
<html><body>Maître Corbeau, sur un arbre perché</body></html>
当我尝试打印文档时:
System.out.println(document.toString());
两项产出:
<html>
<head></head>
<body>
Maître Corbeau, sur un arbre perché
</body>
</html>
文学硕士和国际文学研究中心;科尔博河、阿尔布雷河畔和埃库特河;
为什么有些字符会改变?很抱歉,但为什么这是错误的输出
Maître Corbeau, sur un arbre perché
给你
阿尔布雷河畔科博街
在浏览器中,哪个是正确的,不是吗?如果您想获取包含解码内容的文本,则必须使用document.text()
而不是document.toString()
,因为第二个将为您提供HTML输出。
但请记住,您将失去HTML主体的所有标记结构。
如果您确实必须使用带有解码HTML实体的HTML代码,则必须使用Apache Commons Lang中的
StringEscapeUtils.unescapeHtml4(输入)
,因为您的输入HTML编码不正确。请阅读readFileToString方法的文档。如果不指定编码,它将是平台默认值。也许这就是你的问题。@Smutje我在html中添加了charset=“UTF-8”,但结果仍然相同。@Jakub Hr我尝试直接传递该文件,但输出结果仍然相同。所以我认为它不是readFileToString方法。当您尝试直接从文件解析时,是否定义了编码?顺便说一句,验证readFileToString是否与编码参数配合良好需要1分钟,因此值得一试。StringEscapeUtils.unescapeHtml4正是我所需要的
Maître Corbeau, sur un arbre perché