2010年5月26日水曜日

iPhone、Mailフォーマットの怪

1週間ほど前、友人から「iPhoneからメールを送信すると文字化けして困る」との相談があった。
iPhoneのアドレスといっても"softbank.ne.jp"の方でなく"i.softbank.jp"の方。
自分では複数のメルアドを使い分けている事もあって、メールの文字化けトラブルに遭遇した事が基本的にないのだが、詳しく話を聞いてみると"Yahoo!メール"とのやり取り時にかなりの確率で発生するとの事。

あまり聞いた事も無いけれど、取りあえず自分の"@yahoo.co.jp"アドレス宛にiPhoneからメールを送ってもらった。
着信したメールに特に問題はない。それどころかiPhoneの絵文字までそのまま表示されている。(さすが双方のサービスを展開するソフトバンク)
特に問題ない旨を友人に伝えると、「いや、返信の返信ぐらいから文字化けが始まる」との事。
一応仕事でメールサーバーの運用・保守等もしている身としては「そんなおかしな事無いだろう...?! 特殊な機種依存文字など使ってるんじゃないのか?」と問いただすも、「普通のテキスト平文でもダメ」だと言う。

それなら、取りあえずこのテストメールで何度か返信しあってみようという事でまずこちらから返信。
するとその返信メールに返信してきたメールに異変が。
普段Yahoo!メールはWebブラウザ経由でしか使わないため最初は気づかなかったのだが、返信しようとして引用部分が文字化けしている事に気がついた。

今回届いたiPhoneからのメールは"UTF-8"の文字コードで書かれていて、PCのブラウザであれば表示するのは問題無いのだが、"Yahoo!メール"を携帯電話などで利用している人には既に読めないメールが届いているわけです。

ここで一旦整理。
  1. 最初にiPhoneから届くメール
    text/plain; charset="iso-2022-jp";format=flowed であったり
    multipart/alternative;boundary=Apple-Mail-.... のフォーマット

  2. 返信したメールに返信してきたメール
    ext/plain;charset=utf-8;format=flowed
ちなみに自分の3Gでも、妻の3GSでもテストすると友人と同じく2回目の返信時から"UTF-8"でした。 但し、これには多少条件があって、最初にiPhoneから送ったメールに特定の絵文字を使う事で発生しているようです。(絵文字の種類によって化けない時もある) 完全なプレインテキストだとずっとiso-2022jpのままだったりすます。 これがまた、全て絵文字が悪いかというとそうとも言い切れず、絵文字使ってもiPhoneメールで宿命の"引用"部分が無ければ今のところ文字化けしません。

 Yahoo!メールも中途半端で、iPhoneから絵文字使ったメールを受信した場合ちゃんと絵文字まで表示するのに、返信時の引用部では絵文字部が文字化けしています。 もしかするとこの引用部がiPhoneに誤認知されてしまう事で返信時にキャラクタセットをUTF-8にするのかもしれません。 今のところの"@i.softbank.jp"アドレスの文字化け対策としては、
  1. 基本的に携帯キャリアのアドレス向け以外には絵文字を使わない。
  2. もし絵文字を使用するのであれば、メールの返信時に必ず引用部を削除する。
    (全部消さなくても効果有ります)
といった感じ。 ちなみにコピペが出来るようになった現iPhone OSでは"iPhoneのメールで引用せずに返信する裏技"で紹介されているTipsを活用して引用部をカットする事が出来ます。

0 件のコメント :

コメントを投稿