2

我们正在执行以下操作:

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

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

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

有没有解决的办法?它需要为 JSoup 提供数字字符引用的“源编码”,或类似的东西。

4

1 回答 1

0

尝试调用以下之前text()

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

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

于 2012-10-04T09:52:35.177 回答