代码之家  ›  专栏  ›  技术社区  ›  Winston Chen

什么是最精确的编码检测器?[关闭]

  •  32
  • Winston Chen  · 技术社区  · 14 年前

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

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

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

    3 回复  |  直到 11 年前
        1
  •  11
  •   yishaiz    10 年前

    我查过juniversalchardet和ICU4J ,结果不一致: Juniversalchaddet有更好的结果:

    • 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。或者相反。

    AutoDetectReader Apache Tika 确实如此-首先尝试使用HtmlEncodingDetector,然后使用UniversalEncodingDetector(基于juniversalchardet),然后尝试使用Icu4jEncodingDetector(基于ICU4J)。

        2
  •  4
  •   Winston Chen    14 年前

    我在网上找到了答案:

    http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html

    字符编码检测器的优势在于它的重点是统计分析还是HTML元和XML prolog发现。如果正在处理包含META的HTML文件,请使用cpdetector。否则,您最好的选择是monq.stuff.EncodingDetector或com.sun.syndication.io.XmlReader。

    所以我才用 现在。我会用结果更新这篇文章。

        3
  •  1
  •   fglez    14 年前

    与其他应用程序相比,它更容易与我们的应用程序集成,并产生了很好的结果。