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の文字化けはこれで解消しました。
よかったよかった。