пред. след. стартстоп
0 0
Добавлено в корзину

колировки

 

 

поиск
RDP win
sed
Ubuntu
    rename-files
кодировки
виртуалки
полезности 

 

 

 


Как: Определить и Изменить Кодировку Файла
Posted on Вторник Декабрь 27th, 2016

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

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

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

Дополнительно я приведу примеры конвертации текста между такими наиболее распространенными кодировками, как CP1251 (Windows-1251, Кириллица), UTF-8, ISO-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 Список всех известных кодировок