Обнаружить наличие определенной кодировки - PullRequest
0 голосов
/ 09 июня 2009

Мне нужен способ определить, содержит ли файл символы из определенной кодировки.

В частности, я хочу обнаружить наличие кодированных в UTF8 символов кириллицы в серии файлов. Есть ли инструмент для этого?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июня 2009

Если вы ищете готовое решение, вы можете попробовать Enca .

Однако, если вы хотите обнаружить только то, что может быть декодировано как символы кириллицы UTF-8 (без каких-либо полных проверок достоверности UTF-8), вам просто нужно найти что-то вроде /(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){ n ,}/ (это точное регулярное выражение для n последующих символов русской кириллицы в кодировке UTF8). Для дополнительной проверки, что весь файл содержит только действительные данные UTF-8, вы можете использовать что-то вроде isutf8(1).

Оба метода имеют свои положительные и отрицательные стороны и иногда могут давать неправильные результаты.

2 голосов
/ 09 июня 2009

IIRC библиотека ICU имеет код, который выполняет обнаружение набора символов. Хотя это в основном лучшее предположение.

Редактировать: Я правильно помню, зацените эту статью / учебник

...