YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-04-17 (水)


[一語一絵/IT系]

ウェブメーラー改修 / 2006-03-08 (水)

一部の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/;
    $_;
}
と、こんな感じかな。

しかし、[External]「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日