4

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

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

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

4

2 回答 2

2

ICU4J 的CharsetDetector将为您提供帮助。

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

顺便问一下,什么样的字符导致了错误,又导致了什么样的错误?我认为 ICU4J 会有同样的问题,具体取决于字符和错误。

于 2018-02-02T17:27:04.450 回答
1

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

于 2010-09-11T13:04:45.553 回答