Outlookから送ったメールの添付ファイル名が、iPhoneで「 =?utf-8?Q?...?= 」と無残に文字化けしてしまう現象。その元凶を紐解くと、1990年代から続く 「RFC規格のねじれ」 と、Microsoftによる 「独自の割り切り」 という深い闇に突き当たります。 前回の検証記事( Outlookのエンコード選択 / iPhoneでの5nの法則 )を補完する形で、そもそもRFC(インターネット標準)では添付ファイル名がどう定義されているのかを解説します。 1. 添付ファイル名を定義する「RFC 2183」 メールにファイルを添付する際、ヘッダーには Content-Disposition というフィールドが使われます。これを定義しているのが RFC 2183 です。 Content-Disposition: attachment; filename="example.txt" ここで重要なのは、このRFC 2183が制定された1997年当時、 filename パラメータには 「7bitのASCII文字(英数字)」しか想定されていなかった という点です。日本語などのマルチバイト文字をどう扱うかは、この規格内には書かれていません。 2. 日本語対応の救世主「RFC 2231」 そこで、ファイル名に日本語を使ったり、長すぎる名前を分割したりするために作られたのが RFC 2231 です。これが現在、世界標準の「正しい作法」です。 特徴: filename*=utf-8''%... という形式を使い、文字コードを明示する。 利点: ヘッダーの文法を壊さずに、安全に非ASCII文字を伝送できる。 3. なぜ問題が起きるのか? ― Outlookの「不採用」 ここが最大のポイントですが、 デスクトップ版のOutlook(2019等を含む)は、この「正しい作法(RFC 2231)」を頑なに採用していません。 代わりにOutlookが何をしているかというと、本来はメールの件名(Subject)などに使うための規格である RFC 2047(Encod...
かつて、なんでも屋さんだった自称SEさんが、メモ代わりに書いてます。