java - 数字字符引用的 JSoup 编码问题

标签 java character-encoding jsoup

我们正在做以下事情:

  1. 使用某种指定的编码打开文件阅读器。
  2. 读入每一行,将其解析为 CSV。
  3. 对于 CSV 数据中的某些列,将其传递给 JSoup 以清除 HTML,如下所示:

    public String apply(@Nullable String input) {
        Document document = Jsoup.parse(input);
    
        return document.text();
    }
    

这很好用,除非存在 numeric character references ,例如  。似乎正在发生的事情是,由于我们必须在确定编码后调用 JSoup(以使 CSV 解析工作),当 JSoup 开始将硬编码字节转换为字符时,我们正在工作使用错误的字符集。字节 160 (0xa0) 是 windows-1252 中的不间断空格,但不是有效的 Unicode 字符,因此当 JSoup 将数字字符引用替换为字节时,会为我们提供错误数据。

有解决办法吗?它需要为 JSoup 提供数字字符引用或类似内容的“源代码编码”。

最佳答案

尝试在 text() 之前调用以下代码:

document.outputSettings().charset("windows-1252");

有关更多输出设置,请参阅 javadoc .

关于java - 数字字符引用的 JSoup 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724470/

相关文章:

java - 在 Java 中实现分层架构

linux - Lotus Domino 服务器的字符集

php - 撇号显示为�从Word Doc复制和粘贴文本时显示为菱形

java - 如何查找兄弟索引小于 x 且大于 y 的元素

android - Jsoup网页解析——如何避免被ban?

java - 计算在 java 代码中传递给 MySql 的几个查询中受影响的行数

java - 在MyBatis中插入子对象

装有 Mac OS X 10.4 的 Mac PowerPC 上的 Java 6

java - 希腊字符问题 - 没有 Netbeans

java - 专门用于下载图像和文件的网络爬虫