Как: Определить и Изменить Кодировку Файла


| Следующая

Linux администраторы, работающие с веб-хостингом, знают насколько важно хранить html документы в правильной кодировке.

Из этой статьи вы узнаете, как определить кодировку файла из командной строки в Linux.

А также, вы познакомитесь с лучшим решением для конвертации текста между различными кодировками.

Дополнительно я приведу примеры конвертации текста между такими наиболее распространенными кодировками, как CP1251 (Windows-1251, Кириллица), UTF-8ISO-8859-1 и ASCII.

Дельный Совет: Хотите видеть родной язык в Linux терминале? Просто поменяйте локаль! Читать далее →

Определить Кодировку Файла

Используйте следующую команду, чтобы узнать какая кодировка используется в файле:

$ file -bi [filename]
Опция Описание
-b--brief Не печатать имя файла (краткий режим)
-i--mime Определить тип файла и кодировку

Определить кодировку файлы in.txt:

$ file -bi in.txt
text/plain; charset=utf-8

Изменить Кодировку Файла

Используйте следующую команду для изменения кодировки файла:

$ iconv -f [encoding] -t [encoding] -o [newfilename] [filename]
Опция Описание
-f--from-code Изменить с кодировки
-t--to-code Изменить на кодировку
-o--output Сохранить результат в файл

Изменить кодировку файла с CP1251 (Windows-1251, Кириллица) на UTF-8:

$ iconv -f cp1251 -t utf-8 in.txt

Изменить кодировку файла с ISO-8859-1 на UTF-8 и сохранить результат в out.txt:

$ iconv -f iso-8859-1 -t utf-8 -o out.txt in.txt

Изменить кодировку файла с ASCII на UTF-8:

$ iconv -f utf-8 -t ascii -o out.txt in.txt

Изменить кодировку файла с UTF-8 на ASCII:

Illegal input sequence at position: Поскольку UTF-8 может содержать символы которые не конвертируются в ASCII, iconv будет генерировать сообщение об ошибке «Illegal input sequence at position«, пока вы не скажете пропускать все неконвертируемые в ASCII символы, с помощью опции -c.

$ iconv -c -f utf-8 -t ascii -o out.txt in.txt
Опция Описание
-c Исключить из вывода недопустимые символы

Вы можете потерять символы: Обратите внимание, что используя iconv с опцией -c некоторые символы могут быть потеряны.

 

 

Довольно распространенная ситуация для тех, кто работает одновременно с Windows и Linux.

 

В частности, это касается Windows машин с Кириллицей.

Вы скопировали какой-то файл с Windows в Linux, но при его открытии в Linux, вы видите “Êàêèå-òî êðàêîçÿáðû” – Что за … !?

Без паники — подобные строки могут быть быть легко преобразованы из кодировки CP1251 (Windows-1251, Кириллица) в UTF-8 с помощью:

$ echo "Êàêèå-òî êðàêîçÿáðû" | iconv -t latin1 | iconv -f cp1251 -t utf-8
Какие-то кракозябры

Список Всех Кодировок

Перечислить все известные кодировки:

$ iconv -l
Опция Описание
-l--list Список всех известных кодировок