• ISO-2022-JPWindows方言(CP5022x)は、現在も広く使われている。一方、あまり知られていないが、ISO-2022-JPMac方言も存在する。以下、これを便宜的にISO-2022-JPMacと呼ぶこととする。

  • LeopardMac OS X 10.5)のMailは、方言の自動判別機構を備えていた。が、受信したメッセージがCP5022xであると判断した場合は(わざわざ判別したのに)外字をデコードせずにゲタにするという、これまたよくわからない仕様だった(詳しくは「Apple Mailの方言自動判別?」を参照)。

  • Snow LeopardMac OS X 10.6)のMailは、Apple Mail史上初めて、CP5022xのデコードをサポートした。しかし、ISO-2022-JPMacを完全に切り捨てたわけではなかった。方言自動判別の仕様が変わり、まともに機能するようになったのだ。

  • 下図は、CP5022xとISO-2022-JPMacの外字領域。グレー地(JIS換算で13区相当)が衝突する部分。Snow LeopardのMailは、charset=ISO-2022-JPのメッセージを受信した場合、基本的にはそれをCP5022xであると見なす。ただし、「ISO-2022-JPMacにしか存在しないはずの文字」が含まれていた場合、そのメッセージがISO-2022-JPMacであると解釈する。

  • すなわち、CP5022xで送信された「①」(0x2D21)は「①」と解釈され、ISO-2022-JPMacで送信された「①」(0x2921)も「①」と解釈される。

  • もちろん、CP5022xとISO-2022-JPMacの外字領域には衝突する部分があるので、完全な自動判別は無理。衝突領域の外字を含み、それ以外の外字を含まないISO-2022-JPMacのメッセージを受信した場合、たとえば「㈱」は「⑭」と解釈される。

  • その他、細かいことを言い出せば、CP5022x外字のうち重複するもの(「≒」など)の扱いとか、ISO-2022-JPMac外字の一部はUnicodeに含まれないので表示できないとか、Unicodeに含まれていても入った時期によっては変換テーブルから漏れているとかいろいろあるのだが、このあたりの話は省略。

    元ネタ