一部のSubjectがデコードされない問題発覚。またしてもUTF-8だ。「メールヘッダーはISO-2022-JPがセオリーだろ~?」と愚痴ったところで何の解決にもならない。
つか、これも時代の流れってヤツなのかしら?
でもね、mimedecodeがEUCとシフトJISにしか対応してないという問題は昨年解決したはずなのに…と思って見直すと、昨年改修したのは表示のUTF-8対応だった....しょぼん。
というわけで、今回は mimir.pl の mimedecode を改修。ISO-2022-JPをbase64decodeしてるとこをパクって、"=?utf-8?Q?"をキャッチしてqpdecodeに喰わせるよう追加すれば良い。
## charset=`utf-8',encoding=`Q' の encoded-word にマッチするパターンと、こんな感じかな。
$match_mime_utf_qp = '=\?[Uu][Tt][Ff]-[78]\?[Qq]\?(.+)=*\?=';
## &bodydecode が使う処理残しデータ用バッファ
$bdebuf = "";
## mimedecode interface ##
sub main'mimedecode {
local($_, $kout) = @_;
1 while s/($match_mime)[ \t]*\n?[ \t]+($match_mime)/$1$3/o;
s/$match_mime/&kconv(&base64decode($1))/geo;
s/$match_mime_utf_qp/&kconv(&qpdecode($1))/geo;
s/(\x1b[\$\(][BHJ@])+/$1/g;
1 while s/(\x1b\$[B@][\x21-\x7e]+)\x1b\$[B@]/$1/;
1 while s/(\x1b\([BHJ][\t\x20-\x7e]+)\x1b\([BHJ]/$1/;
s/^([\t\x20-\x7e]*)\x1b\([BHJ]/$1/;
$_;
}
しかし、「Yodobashi.com NEWS」ってば、いつからUTF-8でエンコードするようになったんだ?
【参照】
●竹田暁彦のホームページ http://www.ai.is.saga-u.ac.jp/~takeda/
┗ウェブメーラー
●@IT http://www.atmarkit.co.jp/
┣メールの文字コードを理解する 2006年2月18日
┣小規模オフィスのための無線LAN入門 第1回 無線LANの規格とセキュリティ 2006年2月3日
┗小規模オフィスのための無線LAN入門 第2回 アクセス・ポイントのセットアップ 2006年3月4日