ソースコード、Config ファイルは UTF-8 で記述してある
use strict; use utf8; use Encode; use Config::Simple; binmode STDIN, ":utf8"; binmode STDOUT, ":encoding(shift-jis)"; # 設定ファイルを読み込む my $cfg_obj = new Config::Simple("./config.cfg") || die "Cannot read config file (config.cfg)\n"; my %cfg = $cfg_obj->vars(); $str = decode('utf-8', $cfg{'default.cfg1'}); print "$str\n";内部文字列・外部ファイル読み込み・外部ファイルへ書き出し
use strict; use utf8; use Encode; use Encode::Guess; use Config::Simple; use Log::Handler; binmode STDOUT, ':encoding(shiftjis)'; my $str = '内部文字列'; my $log = Log::Handler->new(); $log->add(file => { filename => 'char_code.log', mode => 'append', maxlevel => 'debug', minlevel => 'info', newline => 1, timeformat => '%Y/%m/%d %H:%M:%S', message_layout => '[%T %L] %m', }); my $cfg_obj = new Config::Simple("./char_code.cfg"); my %cfg = $cfg_obj->vars(); # 内部文字列を STDOUT, log に出力 print "$str (" . guess_encoding($str)->name .")\n"; $str = encode("utf8", $str); # UTF-8 フラグを外す $log->debug($str . " (" . guess_encoding($str)->name . ")"); # Config 文字列を読み込み $str = $cfg{'Test.test1'}; $str = decode("utf8", $str); # 内部処理は UTF-8 に decode してから行う # STDOUT, log に出力 print "$str (" . guess_encoding($str)->name . ")\n"; $str = encode("utf8", $str); # UTF-8 フラグを外す $log->debug($str . " (" . guess_encoding($str)->name . ")");
0 件のコメント:
コメントを投稿