見出し画像

No297 メールで文字化けが発生する理由

最近は随分と減りましたが、メールでは時に文字化けして読めないメールが届くことがあります。
どうして文字化けという事象が発生するのでしょうか?

No296ではその解説の前提としてメールで使われる文字とその文字コードについて解説をしました。

今回はそれを踏まえて、もう少し詳しい解説をします。

文字化けとは何か?

前回のおさらいとなりますが、そもそも文字化けとは何なのでしょうか?

パソコン(PC)やスマートフォン(スマホ)で扱う一つ一つの文字には全てコードポイントという番号を振り当てています。
PCやスマホの内部では、全ての文字はコードポイントで処理し、画面に表示する時だけコードポイントを「絵」として表示します。
コードポイントは人間に取っては無意味な番号ですので、そのまま画面表示されても全く読みようがないからです。

ですので、メールの内容はコードポイントの羅列です。
このコードポイントを画面表示する時に「絵」のチョイスを間違うと、送信者の意図と違った文字が表示されます。

このボタンの掛け違いが起きると、メール全体が全く読めず、日本語として意味が通じない状態になります。この状態をを文字化けと言うのです。

要は送信側が期待していたのと違ったチョイスがなされてしまっているということです。

なお、文字化けメールの中には本文の大半は正しいのに一部の文字だけが化けるというパターンもありますが、これについては後述します。

コードポイントと文字コード

では、誰がどういった基準で「絵」のチョイスをするのでしょうか?
それを規定しているのが文字コード(文字セットとも)と呼ばれるものです。

要はどの文字が何番か、というのを定めたルール集です。

前回に解説した通り、文字コードの番号の振り方にはいくつかの方式があります。

日本語ではJISコードが最初に定められたのですが、その処理手順がかなり面倒だったため、簡易版とも言うべきシフトJISやEUCといった文字コードが好んで使われていた時期がありました。

また、国際的な取り組みとして世界統一コードを目指しているUNICODE(ユニコード)という規格も存在しています。

文字コードのチョイス間違い

前述の通り、文字コードのチョイス間違いが文字化けの最大の要因です。

メールにはメールヘッダという(通常は表示されない)情報があります。
ここに「本文はどの文字コードで書いてあるか」という情報が記載されています。

メールヘッダというのは、文字通りメールの先頭部分に必ず付けられる情報です。
上述の文字コードだけではなく、メールの件名(タイトル)、送信元メールアドレス、送付先メールアドレス、添付書類の有無、といった情報が記載されています。

余談:
 通常メールを見る時にはメールヘッダは表示されません。
 あくまでメールソフトによる情報確認用なのですね。
 多くのメールソフトでは設定でヘッダ表示のON/OFFができます。

このメールヘッダに書かれた文字コード(通常はJISコード)と実際のメール本文で書かれた文字コードが違っていると文字化けします。

いろいろな規約上の縛りがあり、日本語メールでは事実上JISコードで規定されたコードポイントを使わなければなりません。

メールヘッダでJISコードを使うと宣言しておきながら、メール本文がシフトJISやEUC、UNICODEなどで書かれているとメールソフトは困ってしまいます。

メールヘッダに書かれた文字コードを信じて処理しますから、結果として文字化するわけです。

とはいえ、最近は矛盾したメールでもたいていの場合は正しく表示できてしまいます。
これはメールソフト側の努力により、間違いを補正して送信者の意図通り表示できるように工夫を重ねた結果です。

もっとも、これは少々キレイゴトでして、実際には多少のウラがありました。

かつてのマイクロソフト製品(特にOutlook Express)では、このテのインターネット世界でのルール違反がひどかったのです。
ですが、当時のマイクロソフトは王者であり正義でした。
いくら「マイクロソフトがメールのルール違反している。」と主張したところで、一般の方には通じません。(前回と今回で書いた事情を理解していただくのは大変です)

こんなことで、お客さんを失っては大変です。
そのため、メールソフトの開発メーカはOutlookExpressのルール違反は承知の上で、ルール違反のメールでも(送信者が意図した)表示ができるように改修を行ったのです。

メールサーバの余計なお世話

これも最近は激減しましたが、メールサーバが余計なお世話をして、特定の文字や情報を削除するパターンがあります。

そもそもメールは必ずメールサーバと呼ばれるサーバを経由して送付されます。
(決して相手のパソコンやスマホに直送しているわけではありません)

こんな感じになります。

 送信者のパソコン
  ↓
 メールサーバ(送信側)
  ↓
 メールサーバ(受信側)
  ↓
 受信者のパソコン

このメールサーバが日本のサーバであれば、日本語の事情を知っていますから、余計なことをしないのですが、英語圏のサーバで「余計なお世話」をするケースがあったのです。

ちょっと専門的な話になりますが、JISコードのメールでは制御記号というものを多用します。

制御記号というのは、表示しない文字で、プログラムに特別な意図を伝えるのに使われます。
皆さんも日常的に使っている制御記号として「改行」があります。
あれも画面に表示はされませんが、1つのコードポイントが割り当てられている制御記号の一種です。

JISコードのメールでは、日本語部分と英字部分の識別にこういった制御記号を利用しています。(エスケープ記号と言います)
「次の文字は日本語だよ」とか「ここからアルファベットが始まるよ」といった情報をメール本文に埋め込まんでおくわけです。

JISコードを解釈する時は、「ここから日本語なんだな」とか「次はアルファベットか」といったことを理解しながら適切な「絵」を表示するわけです。

ところが、英語圏のメールサーバではこんな考慮は不要です。
そのため、言語切り換えに使っている制御記号を「不適切な文字」とみなして削除してしまうメールサーバがありました。

こうなると、どこからどこまでかが日本語か識別ができず、結果としてほぼ全てがアルファベットとして表示されてしまいます。

上記から想像できる通り、このトラブルは主に海外から日本に向けてメールを送る時に容易に発生していました。

ですが、現在は欧米でも多言語化が進んでいますので、こういった事故が発生する可能性はほぼなくなっています。

正しいけど読めない

知らない文字で書かれたメールは人間側が読めません。
(日本人でアラビア語やタイ語が読める方はごく少数ですよね)

この場合は、文字化けではないのですが、意味がわからないという点では同様です。

ですが、皆さんの知り合いが読めもしない言語や文字でメールを送ってくることなんてまずないでしょう。

となればフィッシング詐欺を疑ってかかるべきです。

知人を騙ったメールにリンクや添付資料が付いていても、絶対にクリックはしないでください。

どうしても内容を知りたければ、メール本文をコピペしてgoogle翻訳にかけてください。
(まず間違いなく詐欺メールだと思いますが)

ホントにおかしい(わからない)

これまた詐欺メールに多いパターンです。

そもそも送信者が犯罪者の場合、今回述べたような日本語の事情など全く知らないでしょう。
そういった人物がGoogle翻訳などを使って日本語メール(と本人は思っている)を作成し、それをコピペしてメールを作った場合、そもそも読めないものを送ってきている可能性があります。

余談:
 私は文字コード不明なフィッシングメールが来ると、何をミスってるんだろうと調べてみます。
 「ああ、惜しいな」の場合もあれば「何送ってきたんだ???」となる場合もあります。

一部だけ文字がおかしい

時に、本文はほぼ読めるのだが、一部だけ文字がおかしいというケースがあります。

この多くは機種依存文字(環境依存文字とも)によるものです。

機種依存文字というのは、いろいろあるのですが、その代表的なのがNEC特殊文字と呼ばれる文字群です。
この文字群には、当時のJISコード(C 6226やX 0208)に含まれない使い勝手の良い文字が多数含まれていました。
NEC特殊文字には、丸付き数字(○の中に1~20が入った文字)や(株)、ローマ数字(IIやIII)などが含まれています。

これらはいずれも使い勝手が良いことからよく使われますが、メールではJISコードしか使えないルールです。
そのため、厳密にチェックするメールソフトでは(株)が使えず、チェックが甘いソフトでは使える、という逆転現象が起きてしまいます。

また、本来はJISとして未定義のコードポイントですので、表示する時は?や〓(未定義であることを示す文字)となるのが厳密には正しいはずですが、ここでもチェックの甘いソフトの方が意図した表示になる逆転現象が生じます。

規約を守ろうとする開発者視点では、マイクロソフトはヒール(悪役)でした。
各メーカのメールソフトが丸付き数字が扱えない中で、Outlook Expressは扱えた(というか正しく実装する気がなかった?)ため、むしろ「気の効くソフト」という評価を得ていました。
筆者にとっては「何が正しいのか?」を一般の方に伝えることの難しさを痛感させられた出来事でした。

また、これも使う機会がめっきり減りましたが、ガラケーの時代の絵文字もパソコンで読むと?や〓になりましたが、これも同様の理由です。

残念ながら、2023年現在もメールで使って良い文字コードはかなり古いJISコード(1990年版まで)に限られていますので、上記の丸付き数字は今も公式には使ってはいけない文字となっています。

まとめ

メール受信時に文字が正しく読めないケースがあります。

受信した時の文字化けも、その分析ができれば対応が取れます。
再送していただくにしても、文字コード指定など怪しいと思われる点を伝えるられます。

また、文字コードの知識がかなり要りますが、受信した文字化けメールを正しい状態を復元できる場合もあります。

とはいえ、近年はメールの文字化けというのは随分と少なくなりました。

そのため、むしろ文字化けするようなメールはフィッシング詐欺を疑うべきではないかと思います。

フィッシング詐欺では、添付書類を開くことやメール記載のURLをクリックすることを期待するものが多くなっています。
また、フィッシング詐欺で知人を騙るケースも増えています。

「本文が文字化けだけど、知っている相手だから大丈夫だろう」という判断は非常に危険です。
くれぐれも騙されないようにご注意ください。

今回は随分長いメールとなってしまいましたが、いかがでしたでしょうか。

次回もお楽しみに。

(本稿は 2023年3月に作成しました)

本Noteはメルマガ「がんばりすぎないセキュリティ」からの転載です。
当所はセミナーなどを通して皆さんが楽しく笑顔でITを利用いただくために、 難しいセキュリティ技術をやさしく語ります。
公式サイトは https://www.egao-it.com/ です。

この記事が気に入ったらサポートをしてみませんか?