【问题标题】:Jsoup having problems with special HTML symbols, ‘ — etcJsoup 有特殊 HTML 符号的问题,' - 等
【发布时间】:2013-09-20 14:50:29
【问题描述】:

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

之前:

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

之后:

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

这到底是怎么回事?在任何 Jsoup 内容之前,我专门将这些特殊字符转换为它们的 HTML 实体以避免这种情况。引号变为实际的引号字符,大于保持不变,商标变为问号。啊啊啊。

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

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

感谢您的帮助!

【问题讨论】:

    标签: java jsoup html-entities


    【解决方案1】:

    下面的代码将给出类似于输入标记。它改变了特定字符的转义模式,并为不支持 Unicode 的系统设置了 ASCII 模式来转义 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);
    

    【讨论】:

    • 太棒了,谢谢...就像一个魅力。我是 Jsoup 的新手,我没有在他们网站上的食谱中看到这个。
    • @Andrew Chaschev settings.escapeMode(Entities.EscapeMode.extended);Entities is not found 因此出现错误。请看我的问题stackoverflow.com/questions/20908946/…
    • @Andrew Chaschev 实体类现在正在工作我安装了 1.6.1 版本的 jsoup,但现在 HTML 文件更糟。它到处都是和换行符。请帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多