iconv
iconv — утилита UNIX (и одноимённая библиотека) для преобразования текста из одной кодировки в другую. Также портирована под Windows.
Синтаксис
[править | править код]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 "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
find . -type f -name '*.htm' -o -name '*.html' | while read i
do
echo $i
iconv -f WINDOWS-1251 -t UTF-8 "$i" > tmp
mv -f tmp "$i"
done
Массовое перекодирование windows
[править | править код]Следующий набор скриптов находит все файлы в текущем каталоге с расширением *.txt, перекодирует в CP1251 из KOI8-R:
all.cmd:
for /R %%i in (.) do call txt.cmd %%i
txt.cmd:
set cd2=%cd%
cd %1
for %%j in (*.txt) do call %cd2%\iconv2.cmd %%j
cd %cd2%
iconv2.cmd:
iconv -c -f KOI8-R -t CP1251 %1 > win.%1
del %1
rename win.%1 %1
Другой способ (через cmd):
Прежде чем выполнять эту команду, нужно добавить путь к программе iconv.exe в переменную окружения Path:
for %%i in (*.txt) do iconv -f cp1251 -t utf-8 "%%i" > utf8/%%i
Команда перекодирует все файлы с расширением «txt» и положит перекодированные файлы в заранее созданную папку utf8.
См. также
[править | править код]Ссылки
[править | править код]- Проект OpenNet: man iconv(1) Архивная копия от 15 января 2009 на Wayback Machine с массой дополнительных ссылок
- http://www.gnu.org/software/libiconv/ Архивная копия от 15 июня 2009 на Wayback Machine
- http://gnuwin32.sourceforge.net/packages/libiconv.htm Архивная копия от 29 июня 2009 на Wayback Machine в рамках проекта GnuWin32
- http://www.freshports.org/converters/iconv/ Архивная копия от 26 июня 2009 на Wayback Machine