encoding
perl ソースの文字コードセットを指定する。
use encoding "cp932";
use encoding "euc-jp";
use encoding
"utf8";
など
"shift-jis" も使えるが、"cp932" の場合はMicrosoft拡張も正しく処理してくれる(らしい)。
エンコード名を省略した場合は、環境変数PERL_ENCODING の値が使われる。
use encoding を記述しない場合は、古典的な文字列(バイト列)と見なされる。従って、2バイト目が7Ch (\) であるようなシフトJIS漢字などを文字列に含めると文字化けする。
use encoding は、コンパイル時に解釈されるので、複数のエンコード名を使う事は出来ない。複数記述した場合は、最後の記述のみが有効になる。use したモジュールに対しても有効になるので、モジュール間の文字コードセットが異なっていると、正しい解釈が行われなくなる。
標準入出力の文字コードセットがソースの文字コードセットと違う場合:
例1)EUCを使用したLinuxでの標準的な設定
use encoding "utf8", STDIN =>":encoding(euc-jp)", STDOUT =>
":encoding(euc-jp)";
例2)Windoesでの標準的な設定
use encoding "utf8", STDIN =>":encoding(cp932)", STDOUT =>
":encoding(cp932)";
ソース文字セットがutf8なら、use utf8を使う方が望ましい。
例1)EUCを使用したLinuxでの標準的な設定
use utf8;
binmode STDIN ,":encoding(euc-jp)";
binmode STDOUT , ":encoding(euc-jp)";
例2)Windoesでの標準的な設定
use
utf8;
binmode STDIN ,":encoding(cp932)";
binmode STDOUT ,
":encoding(cp932)";
ファイルの文字コードセットがソースの文字コードセットと違う場合は、use open を使うこと。