java - 什么是最准确的编码检测器?

标签 java character-encoding

经过一番调查,我发现java世界中有一些编码检测项目,如果InputStreamReader中的getEncoding不起作用:

  1. juniversalchardet
  2. jchardet
  3. cpdetector
  4. ICU4J

但是,我真的不知道哪个是最好的。有实践经验的大神能告诉我哪一个是 Java 最好的吗?

最佳答案

我在一些CSV文件上检查了juniversalchardet和ICU4J,结果不一致: juniversalchardet 的结果更好:

  • UTF-8:检测到两者。
  • Windows-1255:当 juniversalchardet 检测到足够多的希伯来字母时,ICU4J 仍然认为它是 ISO-8859-1。对于更多的希伯来字母,ICU4J 将其检测为 ISO-8859-8,这是另一种希伯来语编码(因此文本没问题)。
  • SHIFT_JIS(日语):检测到 juniversalchardet,ICU4J 认为它是 ISO-8859-2。
  • ISO-8859-1:ICU4J 检测到,juniversalchardet 不支持。

因此,应该考虑他最有可能必须处理的编码。 最后我选择了ICU4J

请注意,ICU4J 仍在维护中。

另外请注意,您可能想要使用 ICU4J,如果它因为没有成功而返回 null,请尝试使用 juniversalchardet。或者相反。

AutoDetectReaderApache Tika正是这样做的——首先尝试使用 HtmlEncodingDetector,然后是 UniversalEncodingDetector(基于 juniversalchardet),然后尝试 Icu4jEncodingDetector(基于 ICU4J)。

关于java - 什么是最准确的编码检测器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3759356/

相关文章:

java - Selenium 2 Webdriver(无法通过 xpath 找到元素)

java - 我们可以改进这段代码吗?

php - 如何在 PHP 中安全地比较 UTF-8 与 ISO 8859-1 (latin1)?

c# - 将重音字符转换为 url 友好字符的方法?

python - 如果 python unicode 对象被错误解码怎么办

MySQL连接字符集问题

java - 绘制斐波那契弧线

java - 如何使用背包找到下料问题的最佳组合

java - 需要根据选择的TAB显示 Activity

ruby - ruby 语法错误,哈希中有多种语言