SoftBank iPhoneのShift_JISによる文字化け
- SoftBank iPhoneのMailは、Windows外字をcharset=Shift_JISで送信する。これを表示できるかどうかは受信側のメーラーによる*1。下図は、件名と本文に「iPhoneから①」と入力したメッセージをSoftBank iPhoneのMailから送信し、LionのMailで受信した例。MacのMailは(SoftBank iPhoneのMailとは逆に)charset=Shift_JISを比較的厳密に解釈し、「①」という「Shift_JISに含まれないはずの文字」が存在することで、そのメッセージをShift_JISとしてデコードするのをやめてしまう。その結果、英数字以外のすべての文字が化けている。このような状況では、テキストエンコーディングを「自動」から「日本語(Windows,DOS)」に変更すれば、本文の文字化けは解消される。ただし、件名の文字化けは直らない。
- 前回述べたように、SoftBank iPhoneのMailは「SoftBank絵文字と衝突する位置のIBM拡張文字」(たとえば「鄧」)を、NEC選定IBM拡張文字としてcharset=Shift_JISで送信する。これもMacのMailでは「①」を含むメッセージと同様に化ける(下図)。
- 下図は、(SoftBank絵文字と衝突しない)IBM拡張文字「﨑」を含むメッセージの例。MacのMailはShift_JISの0xF040以降をユーザ定義文字と見なしてUnicodeの私用領域にマッピングするので、この例では「﨑」だけが化けている。
- SoftBank iPhoneのMailは、絵文字をSoftBankのShift_JISで送信する。これはもちろん、たいていの環境で化ける。おそらく化けないのは、①受信側もSoftBank iPhoneのMail、②受信側がSoftBankのガラケー、③送信側が@i.softbank.jpアカウントで受信側がGmailのウェブまたはGmailアプリ、④送信側が@i.softbank.jpアカウントで受信側がLionのMailの@i.softbank.jpアカウントまたはGmailアカウント、といった条件を満たす場合に限られると思う。下図は@me.comアカウントから送信し、LionのMailの@me.comアカウントで受信した例。
- 以上は、他の環境で受信した場合の文字化けの例。以下、SoftBank iPhoneのMailで受信しても化ける例について。まず、いちばんひどいのが、「鄧」など「SoftBank絵文字と衝突する漢字」をリッチテキストメールで送信するケース。すでに見たように、プレーンテキストメールなら「鄧」はNEC選定IBM拡張文字としてエンコードされるのだが、リッチテキストメールでは、NEC選定IBM拡張文字を含まない変換テーブルが使われるようで、「鄧」は「変換不能」を意味すると思われる0xFCFCになる。このようにエンコード時に化けるので、当然、どのような環境で受信しても化けている(下図)。
- iPhone絵文字のうち唯一Unicode絵文字になり損ねたのが「109」である。iPhoneやLionでは、この字はUnicodeの私用領域のU+E50Aに入っている。SoftBank iPhoneでは、エンコード用のテーブルにはU+E50A→0xFBABがあるが、デコード用のテーブルには0xFBAB→U+E50Aがないものと思われる(下図)。