Apple Mailでハシゴ高が「釵」に化ける件



  • Apple Mail(バージョン2.1(752/752.2)で確認)は、日本語環境においては、送信しようとしているメールに含まれる文字の種類によって、US-ASCII>ISO-2022-JP>CP932>UTF-8の優先順位でcharsetを決定しているようだ(CP932というcharsetはIANAに登録されていないという議論は、ここでは措く)。
  • いわゆるハシゴ高(U+9AD9)はCP932に含まれるため、この1文字のみを入力したメールは、charset=CP932となる。これを下書きとして保存すると、ビューアウインドウ(掲載したキャプチャ画像では背面の方)では「釵」に化け、再度開くとハシゴ高に戻っている。自分宛に送信して受信した場合、ハシゴ高として表示される場合も「釵」として表示される場合もあった(今回はこのあたりの条件については深入りしない)。
  • そのようなわけで、勘のいい人はすでにお気付きかもしれないが、この文字化けが発生する場合、Apple Mailは自分でcharset=CP932と宣言しておきながら、それを無視してcharsetの自動判別を試み、失敗(CP932ではなくEUC-JPと判断)しているようだ。というか、CP932に含まれる「NEC選定IBM拡張文字」のうちEUC-JPとクロスする符号領域の文字のみで構成されたメールのcharsetを自動判別するのは、原理的に不可能である。したがって、ハシゴ高以外でも0xEEA1から0xEEECあたりの文字は、同様の化け方をする。
  • ところでなぜApple MailはU+9AD9のハシゴ高を「IBM拡張文字」の0xFBFCではなく「NEC選定IBM拡張文字」の0xEEE0のほうにマッピングするのかという話もあるが、それは別の機会に。