なぜiPhoneから送ったメールの文字化けが増えているのか
- このごろ「iPhoneから送ったメールが相手先で化けた」といった話をよく聞く。もちろんそういう例は前からあったのだが、明らかに増えている気がする。最近の事例の共通点は「相手先のスマホでメッセージ全体が文字化けする」というもの。で、調べてみた。
- 結論から言うと、原因はcharset=CP932だった。以前にも書いたように、iOSでは「〜」を「ー」などから変換・入力すると、波ダッシュ(U+301C WAVE DASH)ではなく全角チルダ(U+FF5E FULLWIDTH TILDE)になる。そして、この字を含むメッセージをau iPhoneやWi-Fi iPadのMailで送信すると、charset=CP932になる。
- 下図は、charset=CP932のメッセージ(テストです~)をAndroid端末に送った結果をまとめたもの*1。docomoでもauでも、標準のPCメールアプリ(Gmail、キャリアメール以外のアカウントのためのメーラー)では、メッセージ全体が化けた。また、ドコモのspモード(@docomo.ne.jpアカウント)用のメーラーでも、同様に化けた*2。
- charset=CP932のメッセージを送る端末としては、以前からWi-Fi iPadやiPod touchなどがあったが、半年ほど前にau iPhoneが出たことにより、スマホ間のメールのやりとりでCP932が使われる機会が増え、文字化けの話題が目立つようになったのだろう。ちなみにSoftBank iPhone/iPadのMailでは、全角チルダを使った「テストです~」は、charset=Shift_JISになる。これはAndroid端末では化けないが、MacのMailで化けるので、どちらがマシというようなものではない。
- au iPhone(とWi-Fi iPadとiPod touch)における簡単な文字化け防止策は、署名に適当な絵文字でも入れておくこと。そうすれば、すべてのメッセージでcharset=UTF-8になるので、(その絵文字自体は化けても)「全体化け」を回避することができる*3。
*1:@apo_geeさん、@MurakamiShinyuさん、@neo_karo_jp さん、@ojayuさん、@osakanataroさんにご協力いただいてテストしました。ありがとうございます!
*2:ドコモのspモード用のメーラーには、spモードメールアプリ以外にCommuniCaseがあり、こちらはPCメールにも対応している。今回のテストでは、CommuniCaseで受信した@docomo.ne.jpアカウント宛のメッセージは化けなかったが、PCのアカウント宛のメッセージはCommuniCaseで受信しても化けた。
*3:署名に絵文字を入れるのは、あくまでau iPhone、Wi-Fi iPad、iPod touch用の対策。SoftBankのiPhone/iPadでそれをやると、charset=UTF-8ではなくcharset=Shift_JISになってしまう。auでもSoftBankでも確実にcharset=UTF-8にできる文字は「♡」や「◉」など。