LINUX.ORG.RU

perl + iconv


0

0

В файле, сохраняемом на сервере, кодировка cp1251 мне нужна koi8-r.
Этот файл обрабатывает скрипт на перле, я делаю следующее:

system ("iconv -c -f=cp1251 -t=koi8-r $file_to_import > '$file_to_import.koi8'");
$file_to_import = join ( '', $file_to_import, '.koi8');

В итоге размеры файлов разные:

-rw-r--r-- 1 nobody nobody 2401 2005-05-15 18:24 data1.csv
-rw-r--r-- 1 nobody nobody 2384 2005-05-15 18:24 data1.csv.koi8

Вопрос - почему, и правильно ли я делаю.

anonymous

Заодно перекодировались концы строк из виндовых (\r\n) в юниксовые (\n). В data1.csv - 17 строк?

anonymous
()
Ответ на: комментарий от anonymous

shell$ perl -i -n -p -e 's!\cM!!igs' file.ext

?

а по поводу iconv, может быть дело в том, что в одинарных кавычках второй файл?

vilfred ☆☆
()
Ответ на: комментарий от kosmonavt

# pure perl

use Encode;

open F, "<$file_to_import" or die "$file_to_import: $!\n";
@s = <F>;
close F;

open F, ">$file_to_import.koi8" or die "$file_to_import.koi8: $!\n";
print F encode("koi8-r",decode("cp1251",join("",@s)));
close F;

kosmonavt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.