0

UTF-8 でエンコードされた xml ファイルを読み込もうとしています。このファイルのサイズは約 8M で、1 行しか含まれていません。

以下の行を使用して、この単一行の xml ファイルを開きました。

open(INP,"<:utf8","$infile") or die "Couldn't open file passed as input, $!";
local $/ = undef;
my $inputfile = <INP>;
print $inputfile; ## Not working..

しかし、このラインプログラムの後、スタックして待ち続けます。

binmode や decode などの他の方法を試しましたが、同じ問題が発生します。

上記のファイルを開くコードを次のように変更すると、同じプログラムが機能します。

open(INP,"$infile") or die "Couldn't open file passed as input, $!";
local $/ = undef;
my $inputfile = <INP>;
print $inputfile; ## It works..


open(INP,"$infile") or die "Couldn't open file passed as input, $!";
binmode(INP, ":utf8");
local $/ = undef;
my $inputfile = <INP>;
print $inputfile; ## Not working..

ここで私が間違っていることを教えてください。入力データに対して何らかの操作を実行する必要があり、utf8 でエンコードされた出力を取得する必要があります。

4

1 に答える 1

0

ここで最後のスニペット (Ubuntu 12.04、perl 5.14.2) を試しましたが、期待どおりに動作します。私が持っている唯一の問題は、入力と出力の違いです。入力ファイルは UTF-8、出力は ISO-8859-1 です。

追加すると

use utf8;
use open qw(:std :utf8);

ただし、この問題はなくなりました。したがって、これは環境の問題に違いありません。

于 2013-01-17T15:02:58.560 に答える