iconv
iconv— утилитаUNIX(и одноимённаябиблиотека) для преобразованиятекстаиз однойкодировкив другую. Также портирована под Windows.
Синтаксис
[править|править код]iconv[-c][-s][-fencoding][-tencoding][inputfile…]
iconv-l
Описание
[править|править код]Утилита iconv конвертирует текст из одной кодировки в другую. Входная кодировка задаётся ключом -f, а выходная — ключом -t. Любая из этих кодировок по умолчанию равна локали системы. Все входные файлы читаются по очереди, если не задан параметр входного файла, то используетсястандартный ввод,а конвертируемый текст выводится настандартный вывод.
Когда задана опция -c, символы, которые не могут быть преобразованы, просто выбрасываются. В противном случае при появлении подобной ошибки программааварийно завершается.
Когда задана опция -s, сообщения об ошибках не выводятся.
Ключ -l выводит список доступных кодировок.
Примеры
[править|править код]Массовое перекодирование
[править|править код]Следующий скрипт находит все файлы в текущем каталоге с расширением *.java, перекодирует их вUTF-8и результат копирует в каталог res:
mkdirres
find-maxdepth1-iname«*.java»-typef-execbash-c"iconv -c -f WINDOWS-1251 -t UTF-8 {} >./res/{}"\;
Перекодирование всех файлов в каталоге с их заменой:
foriin*;doiconv-fWINDOWS-1251-tUTF-8"$i">tmp;mvtmp"$i";done
Рекурсивное перекодирование всех файлов необходимого типа (в примере — txt):
find.-name'*.txt'|whilereadi;doiconv-fWINDOWS-1251-tUTF-8"$i">tmp;mvtmp"$i";done
Рекурсивное перекодирование всех файлов html:
#!/bin/sh
find.-typef-name'*.htm'-o-name'*.html'|whilereadi
do
echo$i
iconv-fWINDOWS-1251-tUTF-8"$i">tmp
mv-ftmp"$i"
done
Массовое перекодирование windows
[править|править код]Следующий набор скриптов находит все файлы в текущем каталоге с расширением *.txt, перекодирует вCP1251изKOI8-R:
all.cmd:
for/R%%iin(.)docalltxt.cmd%%i
txt.cmd:
setcd2=%cd%
cd%1
for%%jin(*.txt)docall%cd2%\iconv2.cmd%%j
cd%cd2%
iconv2.cmd:
iconv -c -f KOI8-R -t CP1251%1>win.%1
del%1
renamewin.%1%1
Другой способ (через cmd):
Прежде чем выполнять эту команду, нужно добавить путь к программе iconv.exe в переменную окружения Path:
for%%iin(*.txt)doiconv -f cp1251 -t utf-8"%%i ">utf8/%%i
Команда перекодирует все файлы с расширением «txt» и положит перекодированные файлы в заранее созданную папку utf8.
См. также
[править|править код]Ссылки
[править|править код]- Проект OpenNet: man iconv(1)Архивная копияот 15 января 2009 наWayback Machineс массой дополнительных ссылок
- http:// gnu.org/software/libiconv/Архивная копияот 15 июня 2009 наWayback Machine
- http://gnuwin32.sourceforge.net/packages/libiconv.htmАрхивная копияот 29 июня 2009 наWayback Machineв рамках проектаGnuWin32
- http:// freshports.org/converters/iconv/Архивная копияот 26 июня 2009 наWayback Machine