Mac OS Xの文字コード問題に関するメモ このページをアンテナに追加 RSSフィード

2012-04-25

SoftBank iPhoneShift_JISによる文字化け


  • 前回の続き。やや細かい話になるが、SoftBank iPhoneShift_JISによって具体的にどのような文字化けが引き起こされるかを見ていくこととする。

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

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

  • 以上は、他の環境で受信した場合の文字化けの例。以下、SoftBank iPhoneのMailで受信しても化ける例について。まず、いちばんひどいのが、「鄧」など「SoftBank絵文字と衝突する漢字」をリッチテキストメールで送信するケース。すでに見たように、プレーンテキストメールなら「鄧」はNEC選定IBM拡張文字としてエンコードされるのだが、リッチテキストメールでは、NEC選定IBM拡張文字を含まない変換テーブルが使われるようで、「鄧」は「変換不能」を意味すると思われる0xFCFCになる。このようにエンコード時に化けるので、当然、どのような環境で受信しても化けている(下図)。

  • iPhone絵文字のうち唯一Unicode絵文字になり損ねたのが「109」である。iPhoneLionでは、この字はUnicodeの私用領域のU+E50Aに入っている。SoftBank iPhoneでは、エンコード用のテーブルにはU+E50A→0xFBABがあるが、デコード用のテーブルには0xFBAB→U+E50Aがないものと思われる(下図)。

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

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

剛 2012/04/28 11:19 初めまして。いつも興味深く読ませていただいています。

最後の結論は実現して欲しいところですが、
従来型の携帯電話のメールクライアントってutf8に対応しているのですかね?
以前、Google Groupsがメールを強制的にutf8に変換していた時期がありまして、携帯で受信していた人が文字化けするということがありました。

NAOINAOI 2012/04/28 14:00 コメントありがとうございます。

ケータイの内部コードはShift-JISですが、今は各社ともゲートウェイでUTF-8を変換できるので、そのテーブルに含まれている文字なら化けません。SoftBankのゲートウェイがUnicode絵文字をサポートした上で(現在は未対応)、iPhoneがcharset=Shft_JISを使うのをやめる、というのがまともなシナリオだと思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元