Как определить кодировку символов файла? - PullRequest
1 голос
/ 10 сентября 2010

Наше приложение получает файлы от наших пользователей, и эти файлы должны быть проверены, если они соответствуют типу кодировки, который мы поддерживаем (например, UTF-8, Shift-JIS, EUC-JP), и после проверки этого файла мы также необходимо сохранить этот файл в нашей системе и кодировать его как метаданные.

В настоящее время мы используем JCharDet (который является Java-портом детектора символов Mozilla), но есть некоторые символы Shift-JIS, которые, по-видимому, не могут быть определены как действительные символы Shift-JIS.

Есть идеи, что еще мы можем использовать?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2018

ICU4J's CharsetDetector поможет вам.

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

Кстати, какой символ вызвал ошибку и какую ошибку вызвал?Я думаю, что ICU4J будет иметь ту же проблему, в зависимости от символа и ошибки.

0 голосов
/ 11 сентября 2010

Apache Tika - это инструментарий анализа контента, который в основном полезен для определения типов файлов - в отличие от схем кодирования - но он возвращает информацию о кодировке контента для типов текстовых файлов. Я не знаю, являются ли его алгоритмы такими же продвинутыми, как JCharDet, но, возможно, стоит попробовать ...

...