iPhoneからMacに送ったメールの文字化け(まとめ)
- iPhoneから送信したメールの文字化けについて、ある程度のことがわかったので、まとめ。ただし、わたしはiPhoneを持っていない*1。ここに書くことは、限られたサンプルの観察から推定したものであることに留意していただきたい。
- iPhoneのメールには下図のような種類がある。このエントリでは、@me.comや@gmail.comなどの「プロバイダメール」と@i.softbank.jpの「Eメール(i)」について検討する(以下、すべて標準テキストメールという前提で)。個人的には「プロバイダメール」というSoftBankの用語はどうもしっくりこないのだけれど、他に適当な呼称も思い浮かばないので、以下これを用いる。
- まず、@me.comや@gmail.comなどのプロバイダメールについて。下図は、iPhone OS 3、iOS 4 for iPhone 、iOS 4 for iPod touchで「鄧小平」というテキストを送信し、Apple Mail 4.3(Snow Leopard)およびThunderbird 3.0.4で受信した結果をまとめたもの。バツ印(黄色地)は文字化け。
- iPhoneからのプロバイダメールでは、「鄧小平」はcharset=Shift_JISで送信され、これをApple Mailで受信すると文字化けする。ただし、まったく同じ「鄧小平」というテキストでも、化け方には2種類ある。その違いの原因は、「鄧」の符号位置。「鄧」(U+9127)が「IBM拡張文字」の0xFBB9として符号化されている場合、Apple Mailではこの文字だけがゲタになり、「NEC選定IBM拡張文字」の0xEE9Dとして符号化されている場合は全文が化ける(下図)。iPhone Mailがどのように条件で「IBM拡張文字」を(あるいは「NEC選定IBM拡張文字」を)使うのかは不明*2。
- Apple Mailで化けているcharset=Shift_JISのメールは、「メッセージ」メニューの「テキストエンコーディング」で「日本語(Windows, DOS)」を選択すれば読めるようになる。また、メッセージソースとして別名で保存した上でThunderbirdにドラッグして開くという手もある(Thunderbirdを使う方法なら、件名の文字化けにも対応できる)。
- 下図は、「①です」というテキストを送信する際のcharsetについてまとめたもの。同じWindows外字であっても、「①」の符号位置は「鄧」などの漢字とは違って1つしか存在しない。「①」を含むcharset=Shift_JISのメールは、Apple Mailでは全文が文字化けする。
- 「Eメール(i)」と呼ばれるiPhone専用のメールアカウント(i.softbank.jp)は、絵文字のサポートをはじめ携帯電話との親和性を重視したものであり、たぶんそのためにサーバでcharsetを変換しているのではないかと思う。iPhoneのi.softbank.jpアカウントから「鄧小平」というテキストを送信した場合、charset=ISO-2022-JP(実態はCP5022x)となる(下図)。
- このようなメールでは、Windows外字が(サーバでの変換時に?)欠落する場合があるようだ。「鄧小平」は「小平」となる。表示されない文字はデータに含まれていないので、受信側の環境とは無関係(欠落する場合は、どの環境でも欠落する)。必ず欠落するというわけでもないのだが、その原因や再現条件などについては確認できていない。