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.
См. также
Напишите отзыв о статье "Iconv"
Ссылки
- [www.opennet.ru/man.shtml?topic=iconv&category=1&russian=0 Проект OpenNet: man iconv(1)] с массой дополнительных ссылок
- [www.gnu.org/software/libiconv/ Реализация в рамках проекта GNU (англ.)]
- [gnuwin32.sourceforge.net/packages/libiconv.htm Версия для MS Windows (англ.)] в рамках проекта GnuWin32
- [www.freshports.org/converters/iconv/ Порт FreeBSD (англ.)]
Кодировки символов | ||
---|---|---|
Основы | алфавит • текст (файл • данные) • набор символов • конверсия | |
Исторические кодировки | Докомп.: | семафорная (Макарова) • Морзе • Бодо • МТК-2 |
Комп.: | 6-битная • УПП • RADIX-50 • EBCDIC (ДКОИ-8) • КОИ-7 • ISO 646 | |
современное 8-битное представление |
символы | ASCII (управляющие • печатные) • не-ASCII (псевдографика) |
8-битные код.стр. | Кириллица: КОИ-8 • Основная кодировка • MacCyrillic | |
ISO 8859 | 1 (лат.) • 2 • 3 • 4 • 5 (кир.) • 6 • 7 • 8 • 9 • 10 • 11 • 12 • 13 • 14 • 15 (€) • 16 | |
Windows | 1250 • 1251 (кир.) • 1252 • 1253 • 1254 • 1255 • 1256 • 1257 • 1258 • WGL4 | |
IBM & DOS | 437 • 850 • 852 • 855 • 866 «альт.» • МИК • НИИ ЭВМ | |
Многобайтные | Традиционные | DBCS (GB2312) • HTML |
Unicode | UTF-32 • UTF-16 • UTF-8 • список символов (кириллица) | |
Связанные темы | интерфейс пользователя • раскладка клавиатуры • локаль • перевод строки • шрифт • транслит • нестандартные шрифты | |
Утилиты | iconv • recode |
Отрывок, характеризующий Iconv
Французский гусарский унтер офицер, в малиновом мундире и мохнатой шапке, крикнул на подъезжавшего Балашева, приказывая ему остановиться. Балашев не тотчас остановился, а продолжал шагом подвигаться по дороге.Унтер офицер, нахмурившись и проворчав какое то ругательство, надвинулся грудью лошади на Балашева, взялся за саблю и грубо крикнул на русского генерала, спрашивая его: глух ли он, что не слышит того, что ему говорят. Балашев назвал себя. Унтер офицер послал солдата к офицеру.
Не обращая на Балашева внимания, унтер офицер стал говорить с товарищами о своем полковом деле и не глядел на русского генерала.
Необычайно странно было Балашеву, после близости к высшей власти и могуществу, после разговора три часа тому назад с государем и вообще привыкшему по своей службе к почестям, видеть тут, на русской земле, это враждебное и главное – непочтительное отношение к себе грубой силы.
Солнце только начинало подниматься из за туч; в воздухе было свежо и росисто. По дороге из деревни выгоняли стадо. В полях один за одним, как пузырьки в воде, вспырскивали с чувыканьем жаворонки.
Балашев оглядывался вокруг себя, ожидая приезда офицера из деревни. Русские казаки, и трубач, и французские гусары молча изредка глядели друг на друга.
Французский гусарский полковник, видимо, только что с постели, выехал из деревни на красивой сытой серой лошади, сопутствуемый двумя гусарами. На офицере, на солдатах и на их лошадях был вид довольства и щегольства.
Это было то первое время кампании, когда войска еще находились в исправности, почти равной смотровой, мирной деятельности, только с оттенком нарядной воинственности в одежде и с нравственным оттенком того веселья и предприимчивости, которые всегда сопутствуют началам кампаний.
Французский полковник с трудом удерживал зевоту, но был учтив и, видимо, понимал все значение Балашева. Он провел его мимо своих солдат за цепь и сообщил, что желание его быть представленну императору будет, вероятно, тотчас же исполнено, так как императорская квартира, сколько он знает, находится недалеко.
Они проехали деревню Рыконты, мимо французских гусарских коновязей, часовых и солдат, отдававших честь своему полковнику и с любопытством осматривавших русский мундир, и выехали на другую сторону села. По словам полковника, в двух километрах был начальник дивизии, который примет Балашева и проводит его по назначению.
Солнце уже поднялось и весело блестело на яркой зелени.
Только что они выехали за корчму на гору, как навстречу им из под горы показалась кучка всадников, впереди которой на вороной лошади с блестящею на солнце сбруей ехал высокий ростом человек в шляпе с перьями и черными, завитыми по плечи волосами, в красной мантии и с длинными ногами, выпяченными вперед, как ездят французы. Человек этот поехал галопом навстречу Балашеву, блестя и развеваясь на ярком июньском солнце своими перьями, каменьями и золотыми галунами.