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に会ったら言っておきます(笑)。
■この記事へのコメント (16件)
いずれにしても、標準規格と、シェアNo1のアプリの仕様が違うと問題になりますね。IE6もそうでしたが、標準仕様に従ったデータでも、最も多くの人が使っているアプリで正常に動かないのは困りますね。
“標準仕様に従ったデータでも、最も多くの人が使っているアプリで正常に動かないのは困りますね”というところはまさしくそのとおりだと思います。
ただ、これを誰の責任と考えるかというところにちょっと見解の相違があるのかも.....
いずれにしてもないがしろにされているのはユーザなわけで、もういいかげんどうにかしてほしいと私も思います。
誰の責任かと言うことについても、恐らく見解の相違は無いと思います。私も一番悪いのは標準仕様に従わないWindowsメールだと思います。
ただ、標準仕様に対応していないメーラーが世界で一番使われてしまっていて、私がメールを送る人の多くも使っていて、多くの人がWindows Updateをしない(知らない)人たちなので、送る側の私のiPhoneでなんとななれば、よいなあと思って、Steve Jobsにお願いしようと思いました(笑)。
もちろん、マイクロソフトの担当者にも機会があれば言おうと思います。
Explorerのコンテクストメニューから(Microsoftのメーラで)メールを送信した場合、エンコードが勝手にUTF-8になってしまうことなど、Microsoftのアプリの実装はもうめちゃくちゃだと思いますし、職場でもその話で盛り上がる(?)のですが、一歩外に出てプライベートなおつきあいとなると、みんなこういう話には耳を貸してくれなくなります。そういうことがあるので、つい早とちり、思い込みで書いてしまいました。お許しください。
余談ですが、Becky!とかShrikenとかほんとうにきちんと実装してあると思います。“悪貨は良貨を駆逐する”というやつでしょうか。
それからiPhoneでメールを作るときUnicode固有の文字を一文字でいいのでメールに入れておくとplaintextの部分のエンコードもUTF-8になり、Windowsメールでも文字化けしなくなります。でも、これやるとEUDORAとか使っている人のところで文字化けしますよね。“究極の選択”っぽいです。
「JISコードにない文字が含まれているのでUnicodeでメールを送信します」というのは必ずしも正しくありません。iPhoneではJISになくても、いわゆる“機種依存文字”を書くとエンコードは“utf-8”ではなく“shift-jis”になります。ここでいう“機種依存文字”は(iPhoneにおける)丸数字みたいなのではなく“(日)”のようなやつのほうです。
ご参考まで。
最近は絵文字をキャリア毎に自動的に変換して送信してくれるようもなってきていて、そのあたりで、文字コードが変換されるのかもしれません。
いずれにしても、技術的には難しいいろいろな問題が絡んでいそうですが、一般ユーザーには意識させないで使えるようにしてもらいたいですね。
ありがとうございます
iso-2022-jp以外の文字がある場合は、iso-2022-jpでエンコーディングできませんので、Unicodeにしないといけいないです。
本文と件名は別々の文字コードですけど、そのぞれ宣言していますので、仕様を違反していません。
文字コードの宣言があるなのに、その宣言を無視して勝手に想像してデコーディングして、文字化けが発生しまった。
だれのせい?
何件か前のコメントにも書かせてもらいましたが、本当に悪いのは、標準仕様に従っていないWindowsメーラーだと思います。
おかげ様で解決できました。
以前アマゾンからのメールも文字化けしていて嫌がらせか?と思ってメールを止めてもらいましたが、同じ理由だったのかもしれません。
解決できて安心しました。
ありがとうございました。





それぞれのパートには明確にエンコードが記してあるので、これを参照して内容を表示すれば文字化けは起きないはずですし、実際Shuriken 2010では文字化けは起きません。
私はそれぞれのパートのエンコードを確かめずに間違ったエンコードと解釈して文字化けを起こすWindowsメールの仕様に問題があると思います。
なお、Subjectと本文のエンコードが違うだけでは文字化けは起きないようです。