docMM

<< 2014年12月 >>

123456
78910111213
14151617181920
21222324252627
28293031

docMMさんの日記

(Web全体に公開)

2014年
12月25日
13:44

perl苦闘日記(4)~binmode STDOUT, ':encoding(cp932)';

タグ : 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)';

もセットで書いておくと完璧です。
ぃーね! (2) びーさん  ハレー彗星 
棋譜作成
: