经过一定的调查后,我发现java世界中有一些编码检测项目,如果getEncoding
中的InputStreamReader
不起作用:
然而,我真的不知道哪一个是最好的。任何有实践经验的人都可以告诉我哪一个是最好的Java?
答案 0 :(得分:11)
我已在某些 CSV文件上检查了juniversalchardet和ICU4J,结果不一致: juniversalchardet有更好的结果:
因此,应该考虑他最有可能要处理的编码。 最后我选择了 ICU4J 。
请注意仍然维护ICU4J。
另请注意,您可能希望使用ICU4J,如果它因为没有成功而返回null,请尝试使用juniversalchardet。或者相反。
AutoDetectReader的Apache Tika正是这样做的 - 首先尝试使用HtmlEncodingDetector,然后使用UniversalEncodingDetector(基于juniversalchardet),然后尝试使用Icu4jEncodingDetector(基于ICU4J)。
答案 1 :(得分:4)
我在网上找到了答案:
http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html
它在这里说了一些可以说的东西:
字符编码检测器的优势在于它的重点是统计分析还是HTML META和XML prolog发现。如果要处理具有META的HTML文件,请使用cpdetector。否则,你最好的选择是monq.stuff.EncodingDetector或com.sun.syndication.io.XmlReader。
这就是我现在使用 cpdetector 的原因。我会用结果更新帖子。
答案 2 :(得分:1)
我个人在我们的项目中使用了jchardet(juniversalchardet当时不可用)只是为了检查一个流是否是UTF-8。
与我们的应用程序集成比其他应用程序更容易,并取得了很好的效果。