iPhone(iOS 4)とLion間のカラー絵文字の互換性

  • iPhoneとLionは、いずれもAppleカラー絵文字を搭載している。では、メールで絵文字を送りあった場合、互いに正しく表示されるだろうか。このあたりの仕様はiOS 5で変わると予想されので、今のうちに現行のiOS 4.3.5とLion 10.7.1についての検証結果を記録しておこうと思う。
  • Appleカラー絵文字が送信されるときの符号位置には、3種類ある(下図)。iPhoneは、カラー絵文字を含むメッセージを、(基本的には)charset=Shift_JISで送信する。一方Lionは、Unicode絵文字をcharset=UTF-8で送信する。


  • 下図は、LionのMailとiPhoneのMailまたはSMS/MMS間で絵文字を送受信した結果の一覧。iPhoneでは絵文字パレット、Lionでは文字ビューアからU+1F603 SMILING FACE WITH OPEN MOUTHを入力した本文1文字のみの新規メッセージを送信してテストした。「LionからiPhoneへ」なら化けることはなかったが、逆は苦しい。また、「LionからLionへ」「iPhoneからiPhoneへ」でも、化ける場合がある。


  • 以下、化けている例について。まず、絵文字がゲタ記号(〓)になるケース。この例では、softbank.ne.jpアカウントやi.softbank.jpアカウントが利用するソフトバンクのサーバが、宛先のme.comやhoge.co.jpを「絵文字に対応していないアカウント」と見なし、絵文字をあえてゲタ記号に置き換えているのだろう。余計なことをしないで元のまま送ってくれれば、Lionなら表示できるはずなのだが、(もちろんアカウントだけを見て受信側のOSがLionだとわかるわけはないので)まあ、仕方がない。
  • 水色地のケースでは、「base64エンコードされたShift_JISの絵文字」が豆腐になっている。おそらくLionのMailは、8bit(生)のShift_JISなら「ケータイからの(絵文字を含む)メッセージ」と見なすが、base64エンコードされたShift_JISは通常の(絵文字を含まない)Shift_JISとして変換しているのだろう*1
  • ピンク地のケースは、「LionのMailからi.softbank.jpアカウント宛にcharset=UTF-8で送られてきた絵文字入りのメッセージについては、ソフトバンクのサーバがcharset=Shift_JISに変換する」というような仕様なのかなと思うのだが、なぜそんなことをしているのか、よくわからない。この変換の結果、前項で述べた「base64エンコードされたShift_JIS」となるため、絵文字はLionのMailで豆腐として表示される。

*1:ただし、送信元のアカウントがi.softbank.jpである場合は、絵文字を含むメッセージとして変換するようだ。