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に「寄せるため」には、日本語を多めにしろだって。
【3.3 追記】
Outlookのエンコード仕様について、ファイル名を変えながら添付して送って調べてみた。
漢字1文字(3バイト):半角5文字(5バイト)未満だとMIME-B (Base64)、これ以上の比率だとMIME-Q (Quoted-Printable) でエンコードされてた。
Quoted-Printableより、Base64の方が短い(エンコード後のバイト数が少ない)んだけどな…なんでだろ