Perl/Unicode

Top / Perl / Unicode

5.8.x な文字コード関連のメモ

ソースの文字コードを指定

use encoding 'euc-jp';

PerlIOのSTDIN,STDOUTもこの文字コードの影響を受ける。
STDERRは受けない

binmode STDOUT, ':encoding(euc-jp)';

などをさらに重ねるとハマる。

標準出力などの文字コードを指定

# eucで出力されるようになる
use open OUT => ':encoding(euc-jp)';
# 上だけだと標準出力などに影響がないのでこれがいる
use open ':std';
# 出力はutf8にならない
use encoding 'euc-jp';
use open OUT => ':utf8';
use open ':std';

# こっちが正解
use encoding 'euc-jp', STDOUT=>'utf8';

3引数open

use Encode;
# sjisでファイルに出力
open OUT, ">:encoding(shiftjis)", $path;

壊れたマルチバイト文字列(UTF8)の処理

http://blog.doofah.biz/?p=288 参照

# UTFフラグがつく
$broken = decode('utf8', $broken);
# つかない
from_to($broken, 'utf8', 'utf8');

参考


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-05-08 (火) 21:50:07 (4087d)