3

semi-utf8 エンコーディングを含むファイルから行を読み取り、それをさらに操作するために Perl 内部表現に変換したいと考えています。

file.in (プレーン ASCII):

MO\\xc5\\xbdN\\xc3\\x81
NOV\\xc3\\x81

これらは MOŽNÁ と NOVÁ に変換されます。

行をロードし、適切な utf8 表記にアップグレードします。\\xc5\\xbd -> \x{00c5}\x{00bd}. 次に、これをアップグレード$lineして、perl を内部的に表現するようにします。

for my $line (@lines) {
    $line =~ s/x(..)/x{00$1}/g;
    eval { $l = "$line"; };
}

残念ながら、成功しませんでした。

4

1 に答える 1

5
use File::Slurp qw(read_file);
use Encode qw(decode);
use Encode::Escape qw();

my $string =
    decode 'UTF-8',             # octets → characters
    decode 'unicode-escape',    # \x → octets
    decode 'ascii-escape',      # \\x → \x
    read_file 'file.in';

下から上に読んでください。

于 2013-07-12T11:53:03.857 に答える