Iconv

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

iconv — утилита UNIX (и одноимённая библиотека) для преобразования текста из одной кодировки в другую.

Содержание

[править] Синтаксис

      iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile ...]
      iconv -l

[править] Описание

Утилита iconv конвертирует текст из одной кодировки в другую. Входная кодировка задаётся ключом -f, а выходная — ключом -t. Любая из этих кодировок по умолчанию равна локали системы. Все входные файлы читаются по очереди, если не задан параметр входного файла, то используется стандартный ввод, а конвертируемый текст выводится на стандартный вывод.

Когда задана опция -c, символы, которые не могут быть преобразованы просто выбрасываются. В противном случае при появлении подобной ошибки программа аварийно завершается.

Когда задана опция -s, сообщения об ошибках не выводятся.

Ключ -l выводит список доступных кодировок.

[править] Примеры

[править] Массовое перекодирование

Следующий скрипт находит все файлы в текущей директории с расширением *.java, перекодирует их в UTF-8 и результат копирует в папку res

mkdir res
find -maxdepth 1 -iname  "*.java"  -type f -exec bash -c "cat {} | iconv -c -f WINDOWS-1251  -t UTF-8> ./res/{}" \;

перекодирование всех файлов в директории с их заменой

for i in *; do iconv -f WINDOWS-1251 -t  UTF-8 "$i" >tmp; mv tmp "$i"; done

или файлы необходимого типа и рекурсивно (в примере txt файлы):

find . -name "*.txt" | while read i; do iconv -f  WINDOWS-1251 -t UTF-8 "$i" >tmp; mv tmp "$i"; done

или так (рекурсивное перекодирование всех файлов html):

#!/bin/sh
for i in `find . -name *.html -type f`
    do
    echo $i
    iconv -f WINDOWS-1251 -t UTF-8 "$i" > tmp
    mv -f tmp "$i"
    done

[править] См. также

[править] Ссылки


Источник — «http://ru.wikipedia.org/wiki/Iconv»