Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Преобразование текстовых файлов в UTF-8


Автор: arcsupport 8.12.2010, 23:41
Есть каталог. В нем МНОГО текстовых файлов. Они имеют различную кодировку, в т.ч. CP866, CP1251, Unicode (BE и LE), KOI-8.
Их надо всех:
  • Перекодировать в UTF8
  • Изменить символы окончания строки на unix-like.
Дайте команду и/или скрипт для этих целей.

Автор: Egik2 9.12.2010, 11:27
Все утро пытался решить твою проблему smile.
К сожалению стандартными средствами не получается.
Под стандартными я понимаю команду iconv - для нее на входе уже должна быть задана кодировка из которой перекодировать.
делал это средствами file, но толком ничего не получилось.
Вот скрипт:
Код

#!/bin/bash

to="UTF-8";

for file in `find $1 -type f`
do
 from=`file -bi $file  | perl -e 'my $input = <>; $input =~ /charset=(.*)$/; print $1'`;
 echo "Converting $file from $from to $to"
 iconv -f $from -t $to $file > $file.$to;
done;

Проблема в том, что команда file -bi не всегда выводит правильную кодировку.

Вернулись к тому, с чего начали - используй утилиту enca
Скачать например http://linux.softpedia.com/progDownload/Enca-Download-7528.html

По поводу символов окончания используй команду dos2unix - если надо из виндовой кодировки в unixовую

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)