Jsoup有特殊HTML符号的问题,' - 等

时间:2013-09-20 14:50:29

标签: java jsoup html-entities

我有一些HTML(字符串),我通过Jsoup,所以我可以添加一些东西到所有href和src属性,这很好。但是,我注意到对于一些特殊的HTML字符,Jsoup正在将它们从说“转换为实际的字符。我输出前后的值,我看到了这种变化。

在:

THIS — IS A “TEST”. 5 > 4. trademark: ™

后:

THIS — IS A “TEST”. 5 > 4. trademark: ?

到底发生了什么事?我特意将这些特殊字符转换为HTML实体,然后才能避免这种情况。引号更改为实际引号字符,大于保持不变,商标变为问号。 AAAAAAA。

仅供参考,我的Jsoup代码正在执行:

Document document = Jsoup.parse(fileHtmlStr);
//some stuff
String modifiedFileHtmlStr = document.html();

感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

下面的代码将类似于输入标记。它更改特定字符的转义模式,并设置ASCII模式以转义不支持Unicode的系统的TM符号。

输出:

<p>THIS &mdash; IS A &ldquo;TEST&rdquor;&period; 5 &gt; 4&period; trademark&colon; &#x99;</p>

代码:

Document doc = Jsoup.parse("" +
    "<p>THIS &mdash; IS A &ldquo;TEST&rdquo;. 5 &gt; 4. trademark: &#153;</p>");

Document.OutputSettings settings = doc.outputSettings();

settings.prettyPrint(false);
settings.escapeMode(Entities.EscapeMode.extended);
settings.charset("ASCII");

String modifiedFileHtmlStr = doc.html();

System.out.println(modifiedFileHtmlStr);