繁体   English   中英

如何检测文件的字符编码?

[英]How to detect the character encoding of a file?

我们的应用程序从用户那里接收文件,如果这些文件属于我们支持的编码类型(即UTF-8,Shift-JIS,EUC-JP),则必须对其进行验证,并且一旦该文件通过验证,我们还需要将该文件保存在我们的系统中,并将其编码保存为元数据。

当前,我们正在使用JCharDet (这是mozilla字符检测器的java端口),但是似乎有些Shift-JIS字符似乎无法检测为有效的Shift-JIS字符。

还有什么我们可以使用的想法吗?

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

ICU4J的CharsetDetector将为您提供帮助。

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
CharsetDetector cd = new CharsetDetector();
cd.setText(bis);
String charsetName = cd.detect().getName();

顺便说一句,是什么类型的字符引起了错误,又是什么类型的引起了错误? 我认为ICU4J也会遇到相同的问题,具体取决于字符和错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM