Jcode.pmのバグ?Text::Iconvを使う
BlogSurfを作りながら気づいて悩んだのだが、
Perl5.6でJcode.pmのUTF-8の扱いにバグ?があるようだ。
my $text="適当な文字列"; my $utf8=Jcode->new($text)->utf8; my $euc = Jcode->new($utf8)->euc; print getcode($euc);
の結果がutf8となってしまうことがあった。
BlogSurfでは、取得してきたRSSをUTF-8にして、XML::RSSモジュールへ渡して、
データベースやchasenへ渡すときはeucにするということをしています。
eucに変換できないとすべてがおかしくなっていくので困ります。
なので、CPANを探してみつかったText::Iconvを導入して
my %codehash=(
ascii=>"ascii",
binary=>"",
euc=>"euc-jp",
sjis=>"Shift_JIS",
jis=>"ISO-2022-JP",
ucs2=>"UCS-2",
utf8=>"UTF-8"
);
my $iconv = Text::Iconv->new($codehash{getcode($str)},'変換したいcode');
my $newstr = $iconv->convert($str);
BlogSurfの文字化けはこれで解消しました。
よかったよかった。