Perlの文字コード変換の話 其の六
○ PerlIO に指定したエンコードの切り替え
まれに、PerlIOに指定したエンコードを途中で切り替えたい時がある。
このような場合には、次のようにエンコードの指定を行う。
use utf8;
use strict;
use warnings;binmode( STDOUT, ':encoding(utf-8)' );
my $a_data = "ほげほげ";
print "utf8 = " . $a_data . "\n";
binmode( STDOUT, ':raw:encoding(shiftjis)' );
print "sjis = " . $a_data . "\n";
コンソールがshiftjisだった場合、結果は次のようになる。
utf8 = 縺サ縺偵⊇縺楷
sjis = ほげほげ
エンコード指定の前にある、":raw" が前に設定したエンコードを無効にする
働きをする。
○ use encoding によるエンコード指定
わけのわからん挙動をするので、利用しないほうが無難だと思う。
○ 参考ページ
http://www.rwds.net/kuroita/program/Perl_unicode.html#utf8_and_encoding
http://blog.livedoor.jp/dankogai/archives/50692704.html
http://perldoc.jp/docs/perl/5.8.1/utf8.pod