iPhoneから送ったメールが文字化けする問題について

iPhone内蔵のメールソフトを使ってメールを送信すると、受け取った人が文字化けして読めないことがあります。

原因を理解していただくためにはそれなりに、詳しい説明をしないといけないので、そんな説明が面倒だと思われる方のために、先に対処方法を書きます。 

 受信したメールソフトで、受信したメールを表示した状態でエンコードをUnicode(UTF-8)に変更する。

Outlook Expressの場合は、「表示」→「エンコード」→「Unicode(UTF-8)」で変更できます。

それでは、iPhoneから送信したメールで、文字化けが起きる条件や原因について、ここから詳しく書きます。

その原因は、文字コードの問題です。パソコンや携帯電話では、表示する文字に全てコードと呼ばれる番号が付いています。ところがそのコードにはいくつかの種類があります。

なぜ、色々なコードがあるのかというのはコンピュータの歴史とも関係があり、とても長い話になるのでここでは述べませんが、それぞれ表示できる文字が違うコードが複数あると覚えておいてください。

一般的な文字についてはどのコードでも表現できるのですが、記号や特殊文字は、コードによっては表現できないものがあります。 

多くのメールソフトで使われているのが、iso-2022-jpというJISで定められたコードです。

iPhoneに内蔵されているメールソフトでも、普通はiso-2022-jpという文字コードでメールを送信します。その場合は、ほとんどのメールソフトで問題なくメールが受信して読むことができます。

ところが・・・

ここからが、iPhoneの仕様に問題があります(もちろん、アップルは問題とは言わないでしょうが)。

メールの本文や、件名にJISコードで表現できない文字があった場合、iPhoneはUTF-8というコードでメールを送信します。よく言えば「自動的に」、悪く言えば「勝手に」。

送信した人にとっては、何も違いがないので、自分がJISで送っているのか、UTF-8で送っているのかは分かりません。

でも、それを受信したメールソフトによっては、正しくエンコードを理解できないものがあり、その場合文字化けして表示されてしまいます。

もちろん、多くのメールソフトは自動的にエンコードを判断して正しく表示してくれるのですが、iPhoneにはさらにやっかいな悪い仕様が影響します。

件名と本文とをそれぞれ別の文字コードで送るのです。つまり、件名にだけ特殊文字が含まれているときは「件名はUTF-8、本文はJIS」でメールがエンコード(コード化)されるのです。逆に本文にのみ特殊文字が含まれているときは「件名はJIS、本文はUTF-8」でエンコードされます。

受信側のソフトがそれなりに頑張ってエンコードを自動判断しても、多くの場合「件名がJIS」だったら本文も同じJISと判断して文字化けをします。

ですので、その場合は受信したメールソフトでメールを表示するときのエンコードを手動で指定してやればよいのです。それが、最初に書いた対処法です。

私としては、iPhoneがメールを送信する段階で、JISではなくてUTF-8にする場合に「JISコードにない文字が含まれているのでUnicodeでメールを送信します。受信者によっては正しくメールが受信できない場合があります」とかの注意を表示(任意で表示しないようにもできる)すればよいと思います。また、件名と本文は同じエンコードで送信すればよいと思います。

今度、Steve Jobsに会ったら言っておきます(笑)。

コメントする