PerlのXML::libXMLモジュールのお話です。
問題が発生したのと同じ条件で、例題として、xmlの中のNameを取り出すことにする。
my $parser = XML::LibXML -> new(); my $dom = $parser -> parse_file( $file ); my @xmlObj = $dom -> getElementsByTagName( 'xml' ); foreach( @xmlObj ){ my $name = $_ -> findnodes( './Name' ); }
$nameに入る文字がUTF-8のとき(スカラーではなくリファレンスが入る?)、UTF-7に化けることがあるらしい。
どうしてこうなるのかは謎。
パースの問題なのか、どこかでコードを指定しなければならないのかはよく分からず。