我有一些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();
感谢您的帮助!
答案 0 :(得分:8)
下面的代码将类似于输入标记。它更改特定字符的转义模式,并设置ASCII模式以转义不支持Unicode的系统的TM符号。
输出:
<p>THIS — IS A “TEST”. 5 > 4. trademark: ™</p>
代码:
Document doc = Jsoup.parse("" +
"<p>THIS — IS A “TEST”. 5 > 4. trademark: ™</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);