Perl/UnicodeTop / Perl / Unicode5.8.x な文字コード関連のメモ ソースの文字コードを指定use encoding 'euc-jp'; PerlIOのSTDIN,STDOUTもこの文字コードの影響を受ける。 binmode STDOUT, ':encoding(euc-jp)'; などをさらに重ねるとハマる。 標準出力などの文字コードを指定# eucで出力されるようになる use open OUT => ':encoding(euc-jp)'; # 上だけだと標準出力などに影響がないのでこれがいる use open ':std'; # 出力はutf8にならない use encoding 'euc-jp'; use open OUT => ':utf8'; use open ':std'; # こっちが正解 use encoding 'euc-jp', STDOUT=>'utf8'; 3引数openuse Encode; # sjisでファイルに出力 open OUT, ">:encoding(shiftjis)", $path; 壊れたマルチバイト文字列(UTF8)の処理http://blog.doofah.biz/?p=288 参照 # UTFフラグがつく $broken = decode('utf8', $broken); # つかない from_to($broken, 'utf8', 'utf8'); 参考 |