Невозможно со 100% точностью угадать кодировку текстовых файлов.
Такие инструменты, как chardet, firefox, file -i, когда не задана явная информация о кодировке (например, если HTML содержит мета-кодировку =... в голове, все проще) попытается использовать эвристики, которые не так уж плохи, если текст достаточно большой.
Далее я демонстрирую обнаружение набора символов с помощью chardet
(pip install chardet
/ apt-get install python-chardet
при необходимости).
$ echo "in Noël" | iconv -f utf8 -t latin1 | chardet
<stdin>: windows-1252 with confidence 0.73
Получив хороший кандидат на кодировку, мы можем использовать iconv
, recode
или аналогичный
чтобы изменить кодировку файла на вашу «активную» кодировку (в моем случае utf-8) и посмотреть, правильно ли она угадала...
iconv -f windows-1252 -t utf-8 file
Некоторые кодировки (например, iso-8859-3, iso-8859-1) содержат много символов в общем -- иногда нелегко понять, нашли ли мы идеальную кодировку...
Поэтому очень важно иметь метаданные, связанные с соответствующим текстом (например, XML).