OutlookからiPhoneにメールを送ると、添付ファイル名が =?UTF-8?Q?...?= と化ける問題。長年「相性の問題」で片付けられてきたこの怪奇現象に、休日の半日を潰してトドメを刺してきました。 1. 境界線の発見:「5Nの法則」 実験の結果、ファイル名に日本語(非ASCII)が混じっている場合、ある一定の条件でエンコード方式が切り替わることが分かりました。それが以下の 「5Nの法則」 です。 5Nの法則: 非ASCII文字を N 個含むとき、ASCII文字(英数字)が 5N 個に達した瞬間にiPhoneで文字化けが発生する。 非ASCII数 (N) Base64限界 (ASCII) 文字化け発動 (ASCII) 1文字 (あ) 4文字 5文字以上 2文字 (あい) 9文字 10文字以上 3文字 (あいう) 14文字 15文字以上 この法則はUTF-8だけでなく、欧州圏の iso-8859-1 (Latin-1) でも全く同様に発動しました。 2. なぜ「5」なのか?数学的背景 Outlookはメールヘッダーを1バイトでも節約しようと、以下の2つのエンコードを動的に使い分けています。 MIME-B (Base64): 全体を1.33倍にする。 MIME-Q (Quoted-...
かつて、なんでも屋さんだった自称SEさんが、メモ代わりに書いてます。