Outlook日本語環境でUTF-8を使うときのお話。
iPhoneの標準メーラーで添付ファイル名が文字化けした。(正確には「復号してくれなかった」)
=?utf-8?Q?....
今までと同じ方法でファイルを添付して送っていたのに、なぜか表示されない。
そこで、表示できるときとできないときの違いを知りたくて、メールのソースを表示してみた。
すると
■ 表示できる方
filename="=?utf-8?B?..."
■ 表示できない方
filename="=?utf-8?Q?..."
できる方は MIME-B (Base64)、できない方は MIME-Q (Quoted-Printable) だった。
おいおい、なんで違うんだよって思って、Copilotに聞いてみた。
Q. Outlook2019を使っています。ファイル名に日本語を含む添付ファイルを送るとき、ファイル名がBase64エンコードされるときと、Quoted-Printableでエンコードされるときがあります。Base64エンコードで固定したいのですが、どうすればいいですか?
A. 結論から言うと、Outlook 2019 では添付ファイル名のエンコード方式(Base64 / Quoted‑Printable)をユーザー側で固定する設定は存在しません。これは仕様であり、Outlook が内部ロジックに基づいて自動的に選択しているためです。ただし、どのような条件で Base64 / Quoted‑Printable が選ばれるのか、そして Base64 に“寄せる”ために現実的にできる対策があります。
まじかよ。仕様かよ。
Base64に「寄せるため」には、日本語を多めにしろだって。
【2026.3.3 】
Outlookのエンコード仕様を確認したくて、ファイル名を変えながら添付して送って調べてみた。
漢字1文字(3バイト):半角5文字(5バイト)以上の比率だとMIME-Q (Quoted-Printable) 、未満だとMIME-B (Base64)でエンコードされた。
Quoted-Printableより、Base64の方が短い(エンコード後のバイト数が少ない)んだけど…なんでだろ
【2026.3.4 その1】
おもしろそう。あとで読もうっと。
【2026.3.4 その2】
おう、そういうことか。日本人にしてみたら謎の(Base64の方がバイト数少なくなるのに、なぜバイト数が増えるMIME-Qを使うの?)変換ルールは、ヨーロッパ系文字にあわせた仕様だったのね。
添付ファイル名について調べてみた限り、Outlook の 「送信メッセージで優先使用するエンコード方法」による違いはこうだった。
・日本語 (JIS) ⇒ Base64固定
・日本語 (JIS 1 バイト カタカナ可) ⇒ Base64固定
・日本語 (シフト JIS) ⇒ Base64固定
・Unicode (UTF-8) ⇒ 変換ルール
【2026.3.4 その3】
MIME-BとMIME-Qの境界線を見つけたよ。Copilotの回答にあった「内部ロジック」の正体はこれだ。
■ Outlookの添付ファイル名変換ルール
MIME-B < 5N ≦ MIME-Q ※ Nは非ASCII文字数。
UTF-8だけかと思ったけど、Latin-1(iso-8859-1)もこのルールだったよ。
↓ Geminiの回答
「UTF-8(マルチバイト)」でも「Latin-1(シングルバイト)」でも共通して 5N だったのは、結局のところ 「8ビット目のフラグが立っている文字を、いかに効率よく7ビットの網(メールサーバー)に通すか」 という、1970〜80年代から続くメールの基本設計に由来していたわけです。