正確には文字化けではないですね。
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に手を加えないもうちょっとましな方法があります。

              

              

トラックバック(0)

トラックバックURL: http://mt.hide-k.net/mt-tb.cgi/578

コメントする

プロフィール

このブログ記事について

このページは、hideが2006年11月14日 23:45に書いたブログ記事です。

ひとつ前のブログ記事は「お祭りの代償」です。

次のブログ記事は「Fedora Core 6 でmt-daapdを動かしてみる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。