我们的应用程序接收来自我们用户的文件,如果它们属于我们支持的编码类型(即UTF-8,Shift-JIS,EUC-JP),那么这些文件必须经过验证,并且一旦该文件得到验证,还需要将该文件保存在我们的系统中,并将其编码保存为元数据。如何检测文件的字符编码?
目前,我们使用JCharDet(这是一个mozilla字符检测器的java端口),但有一些Shift-JIS字符,它似乎无法检测到有效的Shift-JIS字符。
任何想法我们还可以使用什么?
我们的应用程序接收来自我们用户的文件,如果它们属于我们支持的编码类型(即UTF-8,Shift-JIS,EUC-JP),那么这些文件必须经过验证,并且一旦该文件得到验证,还需要将该文件保存在我们的系统中,并将其编码保存为元数据。如何检测文件的字符编码?
目前,我们使用JCharDet(这是一个mozilla字符检测器的java端口),但有一些Shift-JIS字符,它似乎无法检测到有效的Shift-JIS字符。
任何想法我们还可以使用什么?
Apache Tika是一个内容分析工具包,主要用于确定文件类型 - 与编码方案相反 - 但它确实返回文本文件类型的内容编码信息。我不知道它的算法是否像JCharDet一样先进,但它可能值得一试...
ICU4J的CharsetDetector会帮助你。
顺便说一句,什么样的角色造成了错误,造成了什么样的错误?我认为ICU4J会有同样的问题,这取决于字符和错误。
[Java:如何确定流的正确字符集编码]的可能重复(http://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of -a-stream) – 2010-09-10 12:22:52
应用程序如何接收文件?如果是通过HTTP,这应该存储在MIME头文件中。 – 2010-09-10 12:26:44
@彼得:不,当然不是。 mime头只代表HTTP请求正文的编码,而不是文件的原始编码。 – BalusC 2010-09-10 14:35:59