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