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.