« お祭りの代償 | Home | Fedora Core 6 でmt-daapdを動かしてみる »

[Catalyst]   C::P::Email::Japaneseの文字化け対処

正確には文字化けではないですね。
Catalyst::Plugin::Email::Japaneseを便利に使わせていただいていますが、~が\x{FF5E}で表示されるという報告があがりました。
いわゆるWIDE DASH - FULLWIDTH TILDE問題で、UTF8->ISO-2022-JPでマッピングないというやつです。

正直perl newbieで正解がよくわからんので、MIME::Lite::TT::Japaneseに手を入れるという暴挙にでました。
Lingua::JA::Mailのソースを参考に

sub remove_utf8_flag {
    my $str = shift;

    utf8::decode($str);
    $str =~ tr/\x{005C}\x{00A5}\x{2014}\x{203E}\x{2225}\x{FF0D}\x{FF5E}\x{FFE0}\x{FFE1}\x{
FFE2}/\x{FF3C}\x{FFE5}\x{2015}\x{FFE3}\x{2016}\x{2212}\x{301C}\x{00A2}\x{00A3}\x{00AC}/;

    return $str;
}

一応動くんだけど、正解はどーすればいいんだろか?

追記:
こんな正規表現使うよりもEncode::Unicode::Japanese使った方がよさげです。

追記:
Encode::Aliasを使ってMIME::Lite::TTに手を加えないもうちょっとましな方法があります。

Trackbacks:

このエントリーのトラックバックURL:

コメントを投稿