$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
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 |
Список всех известных кодировок |