http://forums.mozillazine.jp/viewtopic.php?p=43819#43819の続きです。
Thunderbirdの話も含んでいるので、Thunderbirdフォーラムに書きます。
kiyo4_k さんが書きました:
MAD さんが書きました:
コード:
Subject: =?iso-2022-jp?B?GyRCN29MPiVGJTklSBsoQg==?=
Content-Type: Text/Plain; charset="shift_jis"
Content-Transfer-Encoding: base64
lnuVtoNlg1iDZw0K
これは、それぞれ指定した文字コードと実際の文字コードは一致しているので、件名も本文も同時に正常に表示されなければならないと思います。
この例の場合はcharset="shift_jis"としていながらSubject:がISO-2022-JPとしているので実装が間違っていると思います。それを受信側のMUAはcharset="shift_jis"とみなしてデコードしようとして失敗しても無罪だと思います。
そのことの説明が先の和さんの文章では「文字コードには charset パラメータと同じ値を用います。」とだけ書いています。
つまり上の例ではcharsetパラメータは"shift_jis"なのでSubject: =?iso-2022-jp?というのは間違っています。
その解釈は間違いだと思います。
"=?文字コード?…"の文字コードの部分に指定する値はContent-Typeヘッダーのcharsetパラメーターに書ける値と同じ値を使用できるという意味だと思います。
kiyo4_k さんが書きました:
MADさんの例も、オオカミ中年さんの問題も、最近ではMUAというより専用メーラーやWebからの配信メールが多いですが、これらの実装者がMIME規約を知らないというのが理由でしょう。
先の例は、山本さんが実装した
Mewで作成したものです。本文の文字コードは、あえてShift_JISに変更しましたが。
Shift_JISの例ではありませんが、例えば丸付き数字などを使えばあえて文字コードを変更せずデフォルトで異なる文字コードになります。
コード:
Subject: =?iso-2022-jp?B?KDEpGyRCN29MPiVGJTklSBsoQg==?=
X-Mailer: Mew version 6.3 on Emacs 23.2 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
4pGh5pys5paH44OG44K544OIDQo=
これは、「
間違いだらけのメールリーダ - ああ文字コード - charset の決めうち」に書いてある通りの動作(正しい方)だと思います。
これが間違った実装だとおっしゃるなら、ぜひ山本さんにバグ報告していただきたいです。
(ちなみに、Thunderbirdでは作成は以下の通りバグっていますが、表示はできました。)
この例と同じ件名・本文をThunderbirdで書くと、間違ったデータを作成します。
コード:
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1
MIME-Version: 1.0
Subject: =?ISO-2022-JP?B?KDEpGyRCN29MPiVGJTklSBsoQg==?=
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
$B-"K\J8%F%9%H(B
丸付き数字はISO-2022-JPでは表せないのに、本文のcharsetをISO-2022-JPとしています。
これをMew version 6.3 on Emacs 23.2で表示すると、文字化け(丸付き数字の部分に何も表示されない)します。