This page is hosted for free by zzz.com.ua, if you are owner of this page, you can remove this message and gain access to many additional features by upgrading your hosting to PRO or VIP for just 32.50 UAH.

Linux - Командная строка

Не работает? Начинай читать инструкцию.

Перекодировка файлов в Linux. Перекодировать CP1251 в UTF-8

Браузер чаще всего сам определяет кодировку страницы html. Но бывают случаи когда это не удаётся. В данном случае мне необходимо было перекодировать всю документацию написанную на html. Перекодировка файлов в Linux делается несколькими способами.

Предлагаю ознакомиться с предложениями моих партнёров

Проблема заключалась в том, что веб-приложение SAMS отрывалось в кодировке utf8,  а справка по SAMS была написана в кодировке koi8 и открывалась во фрейме. В результате я видел абру-кадабру, вместо кириллицы.

Сначала я немного помучился, а потом нашёл решение, как перекодировать все файлы html из koi8-r в utf8.

Назовём это пакетная перекодировка файлов в utf 8

Открываю консоль и перехожу в директорию, где находятся наши файлы и пишу вот такую несложную команду

cd /usr/share/sams/doc/RU
for file in *; do cat $file | iconv -cs -f koi8-r -t utf8 > $file.tmp; mv -f $file.tmp $file; done

Теперь проблема решена, все мои файлы были перекодированы из koi8-r в utf8 и документация SAMS во фрейме нормально читается.

Если надо перекодировать только один файл,  из кодировки cp1251 в utf-8 достаточно написать команду:

iconv -f cp1251 -t utf8 /user/titles.txt -o /user/titles.txt

Второй вариант, использовать enconv. Можно перекодировать файл, не указывая исходную кодировку. Для этого необходим пакет enca. Установите его.

yum install enca

Теперь что бы перекодировать файл в utf8 выполнить команду

enconv -x UTF-8 -L ru /user/titles.txt

или

enconv -x CP1251 /user/titles.txt

Если не указывать в какую кодировку перекодировать, то файл перекодируется в текущую локаль

enconv /user/titles.txt

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

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

В состав пакета входит утилита enca, которая позволяет определить текущую кодировку файла:

enca /user/titles.txt
Universal transformation format 8 bits; UTF-8

Предлагаю ознакомиться с предложениями моих партнёров