タグ :
perl
Programを書く文字コードをuse utf8のように指定できることは前回書いた。
でも、このおまじないを書くと、例えば、
$s = "おはよう";
print "$s\n";
と$sの中身を表示しようとすると日本語が文字化けする。
これはwindowsがShift-JISしか扱えないため、utf8で書かれた文字は表示できないことに起因する。
print encode('Shift-JIS', "$s\n" );
と書けば文字化けしないが、printはデバッグ用に一時的に使ったりすることが多いのでとても面倒。
そんな時出会ったおまじないが冒頭のおまじない。(cp932とは、MS-windows独自拡張のShift-JISコードを表していて、例えば”~”という文字を表示できる。)
これを書いておくとdos窓への出力を自動的にShift-JISに変換してくれる。
普通に、
print "$s\n";
と書いてもちゃんと表示されるのだ。
他に、
binmode STDIN, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
もセットで書いておくと完璧です。