Кодировка файлов Linux

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

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

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

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

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

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

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

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

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

[BONUS] Изменить кодировку строки с CP1251 (Windows-1251, Кириллица) на UTF-8
$ echo "Êàêèå-òî êðàêîçÿáðû" | iconv -t latin1 | iconv -f cp1251 -t utf-8
Какие-то кракозябры
Список Всех Кодировок

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

Категория: 
The code has been tested and works
Мультитег: 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.