4Debian.Info - Портал русскогоязычного сообщества Debian Карта сайта Контакты

Меню

Репозитории Debian

Скачать Debian

Установка Debian - Видео



Авторизация:

Новые статьи

Статьи в RSS

Новые комментарии

Новые уроки

Уроки в RSS


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

Содержание
Синтаксис
bash:
  1. iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile …]
  2. iconv -l
Описание

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

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

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

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

Примеры Массовое перекодирование

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

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

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

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

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

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

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

bash:
  1. # !/bin/sh
  2. find . -type f -name '*.htm' -o -name '*.html' | while read i
  3. do
  4. echo $i
  5. iconv -f WINDOWS-1251 -t UTF-8 "$i" > tmp
  6. mv -f tmp "$i"
  7. done
Массовое перекодирование windows

Следующий набор скриптов находит все файлы в текущей директории с расширением *.txt, перекодирует в CP1251 из KOI8-R:

all.cmd:

bash:
  1. for /R %%i in (.) do call txt.cmd %%i

txt.cmd:

bash:
  1. set cd2=%cd%
  2. cd %1
  3. for %%j in (*.txt) do call %cd2%\iconv2.cmd %%j
  4. cd %cd2%

iconv2.cmd:

bash:
  1. iconv -c -f KOI8-R -t CP1251 %1 > win.%1
  2. del %1
  3. rename win.%1 %1


Яндекс.Метрика
4Debian.Info
При полной или частичной перепечатке текстов статей и публикаций гиперссылка на www.4debian.info обязательна. | "4Debian.Info" | © 2018