먼저 인코딩 계층은 세미콜론이 아닌 콜론으로 열기 모드에서 분리됩니다.
open OUT, '>:encoding(latin1)', "out.txt" or die "Cannot open output file: $!\n";
둘째 라틴 1은 UTF-8의 작은 서브 세트를 인코딩 할 수있다. 또한이 하위 집합의 대부분은 두 인코딩에서 모두 동일하게 인코딩됩니다. 따라서 인코딩되지 않은 문자가 포함 된 테스트 파일을 사용해야합니다 (예 : \N{MULTIPLICATION SIGN}
U + 00D7 ×
이며 Latin-1에서는 \xD7
이고 UTF-8에서는 \xC3\x97
입니다.
실제로 입력 파일을 디코딩해야합니다.
use strict;
use warnings;
use autodie;
open my $in, "<:encoding(UTF-8)", "input.txt";
open my $out, ">:encoding(latin1)", "output.txt";
while (<$in>) {
print { $out } $_;
}
input.txt
및 output.txt
나중에 다른이 있어야합니다
여기
$ perl -CSA -E'say "\N{U+00D7}"' > input.txt
당신이 제대로 파일을 레코딩하는 것을 테스트 할 수있는 방법입니다 : 여기
는 테스트 파일을 생성 할 수있는 방법입니다 길이 (3 바이트 → 2 바이트).
오픈 모드 문자열에는 실제로 세미콜론이 있습니까? 그것은 콜론이어야합니다 -> : encoding (Latin1)' – Borodin