X-Apple-Encoding-Hintというフィールド

  • おそらく再現条件は、受信したメールAと返信メールB(下書きとして保存するメール)でcharsetが違っていること。たとえばShift_JISのメールへの返信がISO-2022-JPであったり、ISO-2022-JPのメールへの返信がCP932であったりすると、下書きメールボックスではメールAのcharsetを想定してメールBをデコードしてしまうために化けるようだ。
  • 下書きメールを開かない状態でテキストエンコーディングを「自動」に直せば文字化けは解消するが、下書きメールを開いてから同じ操作をした場合、デコードではなくエンコードの指定になってしまうので、文字化けは直らない。また、一度直したメールを下書きメールボックスに保存すると、再び化けている。
  • どうしてメールBが「メールAのcharsetの情報」などを持っているのだろうと思ってヘッダを見ると、X-Apple-Encoding-Hintというフィールドがあやしい。いろいろ試したところ、このフィールドの値は「ISO-2022-JPのメールへの返信」なら「2080」、「Shift_JISのメールへの返信」なら「2561」というようなことになっているようだ(下図)。


  • X-Apple-Encoding-Hintというフィールドは「UTF-8のメールへの返信」にはないし、送信後のメールにもないので、「ローカルなcharsetのメールへの返信を下書きメールボックスに格納しておく場合」用のものだと思われるが、文字化けを発生させる以外に、何か役割を担っているのだろうか。