Мне нужно прочитать текстовый файл в Perl, который закодирован как UTF-8, это работает нормально. Мой выходной файл OUT_2 должен быть закодирован как ISO-8859-1 (также известный как «Latin1»). Я пробовал этот код (и некоторые другие), но мой выходной файл OUT_2 всегда записывается как UTF-8. Любая идея для достижения этого?
use strict;
use Encode::Encoder;
open IN, "c:/Temp/Input.txt"; # this file is UTF-8
open OUT_1, ">", "c:/Temp/out_1.txt";
# encoding of OUT_1 does not matter because it contains only ASCII
open OUT_2, ">:encoding(latin1)", "c:/Temp/out_2.txt";
my $line = 1;
while ( <IN> ) {
chomp;
print OUT_1 "Write line $line\n";
print OUT_2 "$_ and some stuff\n";
$line++;
}
close IN;
close OUT_1;
close OUT_2;
Это предложение тоже не работает:
my $data = "$_ and some stuff\n";
Encode::encode("latin1", Encode::decode("UTF-8", $data));
print OUT_2 $data;