• 締切済み

Perlでutf-8の読み込み

Perlでutf-8で書かれたファイルを読み込んでいます。 open(FH, "<:utf8", $filename); my @lines=<FH>; close(FH); ファイルの中に「マリー・アントワネット」という文字があるのですが、これが読み込まれた結果「マリー?アントワネット」になってしまいます。この理由と対処法をご存じの方がいらっしゃいましたら、教えてください。 なお、perlのバージョンは5.8.4です。 よろしくお願いします。

みんなの回答

回答No.2

「マリー・アントワネット」の"・"が、UTF-8定義外文字の点になっていることが考えられます。 点に見えるんですが、実際には点じゃない定義外の文字なのかもしれません。 ファイルの中の"・"をエディタでキーボードから入力する"・"に書き換えてみて、文字化けが発生しなくなったらこの理由で当たりだと思います。

1234567890123
質問者

補足

読み込んでいるファイルはterapadで自分で入力し、utf-8nに指定して保存したものです。

回答No.1

読み込まれた結果をどのようにして出力していますか? (use encoding 'utf8', STDOUT => 'utf8'; など、環境に合わせて指定した上で print で出しているということですか?)

1234567890123
質問者

補足

utfを指定して開いたファイルに書き出しています。他の文字はutfで保存されていますので、その点は問題ないと思います。 また、パターンマッチでこの部分だけマッチしませんので、読み込み時にすでに文字化けしていると思われます。

関連するQ&A