С кириллицей всегда и во всех сиcтемах было много проблем. Изначально существовала KOI-8, в которой позиция русских букв соответствовала английским, так если при передаче отрезался 8-й бит, текст отставался читабельным - эта кодировка до сих пор распространена в почтовой переписке. Со времен ДОС использовалась IBM CP866, потом в Windows начали использовать Win CP1251, сейчас общепринятой кодировкой считается Unicode, а именно UTF-8 в мире unix и UTF-16 в мире windows. Кроме того, существуют малораспространенные кодировки ISO 8859-5, CP855, Mac.

Для работы с различными кодировками в linux есть множество программ. Практически в любой системе присутствует iconv:

$ iconv -f KOI8-R -t UTF-8 test.txt

Список доступных кодировок можно получить:

$ iconv -l

Несколько проще в использовании recode:

$ sudo apt-get install recode
$ recode koi8-r..utf-8 test.txt

Список доступных кодировок запрашивается аналогично:

$ recode -l

Но, как правило, нам совершенно неинтересно в какой кодировке был файл и в какой он должен быть. Тут нам на помощь приходит пакет enca. Выполнение команды enca для файла нам покажет текущую кодировку, а enconv преобразует кодировку файла в системную:

$ sudo apt-get install enca
$ enca test.txt
MS-Windows code page 1251
$ enconv test.txt
kruzo@kruzo:~$ enca test.txt
Universal transformation format 8 bits; UTF-8
CRLF line terminators

А что делать, если у вас подборка разных статей в различных кодировках? Как раз в таком случае нам и пригодится этот пакет. Преобразуем все файлы из текущей директории к кодировке принятой в системе:

$ find ./ -iname \*.txt -print0 | xargs -0 -n 1 enconv

 

Добавить комментарий