SoftBank iPhoneのShift_JISによる文字化け

  • 前回の続き。やや細かい話になるが、SoftBank iPhoneShift_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としてデコードするのをやめてしまう。その結果、英数字以外のすべての文字が化けている。このような状況では、テキストエンコーディングを「自動」から「日本語(WindowsDOS)」に変更すれば、本文の文字化けは解消される。ただし、件名の文字化けは直らない。


  • 前回述べたように、SoftBank iPhoneのMailは「SoftBank絵文字と衝突する位置のIBM拡張文字」(たとえば「鄧」)を、NEC選定IBM拡張文字としてcharset=Shift_JISで送信する。これもMacのMailでは「①」を含むメッセージと同様に化ける(下図)。


  • 下図は、(SoftBank絵文字と衝突しない)IBM拡張文字「﨑」を含むメッセージの例。MacのMailはShift_JISの0xF040以降をユーザ定義文字と見なしてUnicodeの私用領域にマッピングするので、この例では「﨑」だけが化けている。


  • SoftBank iPhoneのMailは、絵文字をSoftBankShift_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がないものと思われる(下図)。


  • Unicode絵文字では、国旗の絵文字は専用のアルファベット2文字の組み合わせで表現される。SoftBank iPhoneのMailは、SoftBankShift_JISで符号化された国旗の絵文字をUnicode絵文字に変換する際、2文字目を落としてしまうようだ(下図)。


*1:それがいいことかどうかは別として、たいていのメーラーは表示できると思う。