[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に手を加えないもうちょっとましな方法があります。
