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

时间:2010-09-10 12:19:30

标签: java utf-8 character-encoding detect shift-jis

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

ICU4J的CharsetDetector会帮助你。

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

顺便说一下,出现了什么样的角色错误,导致了什么样的错误?我认为ICU4J会遇到同样的问题,具体取决于角色和错误。