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.

См. также

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.