2010-09-10 44 views
1

我们的应用程序接收来自我们用户的文件,如果它们属于我们支持的编码类型(即UTF-8,Shift-JIS,EUC-JP),那么这些文件必须经过验证,并且一旦该文件得到验证,还需要将该文件保存在我们的系统中,并将其编码保存为元数据。如何检测文件的字符编码?

目前,我们使用JCharDet(这是一个mozilla字符检测器的java端口),但有一些Shift-JIS字符,它似乎无法检测到有效的Shift-JIS字符。

任何想法我们还可以使用什么?

+1

[Java:如何确定流的正确字符集编码]的可能重复(http://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of -a-stream) – 2010-09-10 12:22:52

+0

应用程序如何接收文件?如果是通过HTTP,这应该存储在MIME头文件中。 – 2010-09-10 12:26:44

+0

@彼得:不,当然不是。 mime头只代表HTTP请求正文的编码,而不是文件的原始编码。 – BalusC 2010-09-10 14:35:59

回答

0

Apache Tika是一个内容分析工具包,主要用于确定文件类型 - 与编码方案相反 - 但它确实返回文本文件类型的内容编码信息。我不知道它的算法是否像JCharDet一样先进,但它可能值得一试...

0

ICU4J的CharsetDetector会帮助你。

​​

顺便说一句,什么样的角色造成了错误,造成了什么样的错误?我认为ICU4J会有同样的问题,这取决于字符和错误。