【问题标题】:JSoup - preserve html entities when outputting as utf-8?JSoup - 输出为 utf-8 时保留 html 实体?
【发布时间】:2015-08-16 18:06:59
【问题描述】:

我想在使用 JSoup 时保留 html 实体。这是来自网站的 utf-8 测试字符串:

String html = "<html><body>hello &#151; world</body></html>";

String parsed = Jsoup.parse(html).toString();

如果以 utf-8 格式打印解析后的输出,看起来序列 — 被转换为代码点值为 151 的字符。

有没有办法让 JSoup 在输出为 utf-8 时保留原始实体?如果我以 ascii 编码输出:

Document.OutputSettings settings = new Document.OutputSettings();
settings.charset(Charset.forName("ascii"));
Jsoup.parse(html).outputSettings(settings).toString();

我会得到:

hello &#x97; world

这就是我要找的。​​p>

【问题讨论】:

  • 我认为没有办法做到这一点。但是应该可以输出为 ASCII,(你已经在做的事情)并使用它,因为 ASCII Charset 与 utf-8 兼容。

标签: jsoup


【解决方案1】:

您遇到了 Jsoup 的一个缺失功能​​(在撰写本文时 Jsoup 1.8.3)。

我可以看到三个选项:

选项 1

https://github.com/jhy/jsoup 上发送功能请求 我不确定你是否会很快被添加...

选项 2

使用此 SO 答案中提供的解决方法:https://stackoverflow.com/a/34493022/363573

选项 3

编写一个自定义NodeVisitor,它将带有代码点值的字符转换回它们的 HTML 等效转义序列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    相关资源
    最近更新 更多