文字化けメールの傾向と対策
文字化けメールを受け取った場合
はじめに以下の事だけは試してください。
- OutlookExpressの場合
「表示」->「エンコード」で希望の文字セットを選ぶ。それでも直らない場合は「ツール」->「オプション」から「読み取り」タブをクリックし、「フォント」ボタンをクリック。フォントの設定からスペイン語を表示したい場合は「西ヨーロッパ言語」にする。
- NetscapeMessangerの場合
「表示」->「文字コードセット」で希望の文字セットを選ぶ。それでも直らない場合は「編集」->「設定」->「フォント」の内容を確認する。スペイン語の場合は、文字コードセット=欧米、プロポーショナルフォント=Times New Roman等、固定ピッチフォント=Courier New等 に設定してみる。
- その他のMUAの場合
それぞれのヘルプを参照してください。
あなたのメール、文字化けしてると言われた
エンコードを日本語の場合は ISO-2022-JP(またはJIS X 0208)、スペイン語など西ヨーロッパ言語の場合は、ISO-8859-1(Latin 1) に設定します。英語の場合はどちらでもかまいません。
日本語の選択に ISO-2022-JP(またはJIS X 0208) は、ないかもしれません。これは、ISO-2022-JP で送られることが常識となっているからです。この場合Shift-JIS,EUC,Unicodeに設定されていない事を確認してください。
文字セットが異なる為、1つのメール(エンティティ)で日本語と西ヨーロッパ言語(英語を除く)を一緒に使う事はできません。どうしても共存させたい場合は、MicrosoftWord等のワープロソフトのデータを添付するか、HTML形式のメールで送ってください。Unicodeで送る方法もありますが、相手のMUAがUnicodeに対応しているかを確認してください。またHTML形式に関してもあなたのMUAがどこまで対応しているかわからないので、一度自分宛てにテストメールを送って、正常に読めることを確認してからにしてください。
エンコードの設定、確認方法は以下の通りです。
- OutlookExpressの場合
「表示」->「エンコード」で希望の文字セットを選ぶ。それでも直らない場合は「ツール」->「オプション」から「読み取り」タブをクリックし、「フォント」ボタンをクリック。フォントの設定からスペイン語を表示したい場合は「西ヨーロッパ言語」にする。
- NetscapeMessangerの場合
「表示」->「文字コードセット」で希望の文字セットを選ぶ。それでも直らない場合は「編集」->「設定」->「フォント」の内容を確認する。スペイン語の場合は、文字コードセット=欧米、プロポーショナルフォント=Times New Roman等、固定ピッチフォント=Courier New等 に設定してみる。
- その他のMUAの場合
それぞれのヘルプを参照してください。
文字化けメールの実際
●タイトルや宛先が「=?iso-2022-jp?..... 」になっている。
これはMIME非対応のMUAやWebメールページを使用したときに現れます。
=?iso-2022-jp?q?で始まるQ符号化と
=?iso-2022-jp?b?で始まるB符号化があります。
解析手順
- 例1)?ISO-2022-JP?B?GyRCJDMkcyRLJEEkTxsoQg==?=
これはISO-2022-JPがBエンコードされたものです。
GyRCJDMkcyRLJEEkTxsoQg==を解析します。
互換表からGは0001100、yは110010になります。これを=を除く最終文字(例の場合はg)までデコードします。
000110 110010 010001 000010 001001 000011 001100 100100 011100 110010 010001 001011 001001 000100 000100 100100 010011 110001 101100 101000 010000 100000
区切りを6ビットから8ビットに直し、16進表示します。
00011011 00100100 01000010 00100100 00110011 00100100 01110011 00100100 01001011 00100100 01000001 00100100 01001111 00011011 00101000 01000010 0000
1B 24 42 24 33 24 73 24 4B 24 41 24 4F 1B 28 42
最初の3バイト(1B 24 42)はJISコード開始、最後の3バイト(1B 28 42)は終了を示します。この間のデータを16ビットで区切り、JISコード(ISO-2022-JP)に対応する文字をあてはめてみると、
2433 = こ
2473 = ん
244B = に
2441 = ち
244F = は
となる。
- 例2)hola =?ISO-8859-1?Q?=BFc=F3mo_est=E1s=3F?=
これはISO-8859-1がQエンコードされたものです。
=BFc=F3mo_est=E1s=3Fを解析します。
quoted-printable互換表から
=BFは ¿
cはそのまま c
=F3は ó
moはそのまま mo
_はスペース文字に変換
estはそのまま est
=E1は á
sはそのまま s
=3Fは ?
つまり hola ¿cómo estás? です。
以下は稀な例ですが、日本語がQエンコードされた場合、欧語がBエンコードされた場合の例を示します。
- 例3)=?ISO-2022-JP?Q?=1B=24=42=24=33=24=73=24=4B=24=41=24=4F=1B=28=42?=
JISコードがQエンコードされたものです。
1B2442 2433 2473 244B 2441 244F 1B2842
ESCコード こんにちは ESPコード
- 例4)=?ISO-8859-1?B?aG9sYSC/Y/NtbyBlc3Thcz8A=?=
ISO-8859-1(Latin1)コードがBエンコードされたものです。
hola ¿cómo estás?
68 6F 6C 61 20 BF 63 F3 6D 6F 20 65 73 74 E1 73 3F 00
●「$2$s$K$A$O」の様に$記号の多い文字化けなっている。
iso-2022-jpで日本語開始、終了を示すエスケープシーケンスが抜け落ちだ場合にこのような文字化けを起こします。$記号はiso-2022-jpのひらがなをASCIIで表示したときに現れる文字です。$2$s$K$A$OをASCIIコードで表すと、2433 2473 244B 2441 244fになり、JISコードで「こんにちは」になります。また日本語EUCをそのまま送信してしまい、最上位ビット(MSB)が欠けた場合も$記号が多くなります。
●タイトルも本文もすべて?マークになっている。
これは日本語に対応していないMUAやWebメールで無理やり日本語を送信した場合に起きる現象です。これは修復できません。差出人に正しい方法でメールを送りなおしてもらいましょう。
●スペイン語やフランス語の中に時々漢字が混じる。
Informática が Inform疸ica になってしまいます。ISO-8559-1(Latin1)のコードに直して見ましょう。
0x49,0x6e,0x66,0x6f,0x72,0x6d,0xe1,0x74,0x69,0x63,0x61
この中でASCII以外の文字は0xe1になります。0xe1とそれに続く1文字0x74がシフトJISの漢字1文字「疸」と誤認識しています。大抵、この種も文字化けはMUAのエンコードやフォントの設定を変えれば直ります。しかし、MUAの設定をJIS(ISO 2022-JP)のままで、Latin1の拡張文字を入力すると、MUAが文字をすべてJISに変換し、拡張文字の前後でエスケープシーケンスが入るので変換しにくくなります。
●スペイン語やフランス語の中に時々&を含む記号・文字が混じる。
これは、日本語の掲示板やWebメール、HTMLメールに対応していないMUAを使った場合に起こります。対応表を下に示します。日本語の掲示板やWebメールを使っている場合は、欧州文字が使えるかをページの管理者に相談してください。HTMLメールに対応したMUAを使っている場合でも、バージョンにより、文字化けする事があります。
スペイン語特殊文字のみ抜粋
化け文字 | 文字 | 化け文字 | 文字 | 化け文字 | 文字 | 化け文字 | 文字 |
Á | Á | á | á | É | É | é | é |
Í | Í | í | í | Ó | Ó | ó | ó |
Ú | Ú | ú | ú | Ñ | Ñ | ñ | ñ |
Ü | Ü | ü | ü | ¡ | ¡ | ¿ | ¿ |
●添付ファイルのファイル名が文字化けする。
RFC2231で提唱されている方式が正しい方法だと思いますが、それをサポートしているMUAは多くないようです。現状ではファイル名はASCIIで8文字以内にする事がベストのようです。
●内容は分かるが、どきどき記号のような文字が混じる。
例)「みんなー〓げんきー〓」
これは差出人の使っているパソコンや携帯電話の機種だけで使える文字をそのまま送ってしまったと考えられます。見にくい場合には差出人にその旨を伝えておきましょう。
●メールの終わりの方に英数字や記号がびっしり詰まったものが送られてくる。
これは文字化けではありません。ワープロのデータなどバイナリデータ(8bitデータ)を送る場合には、メールで確実に届くようにテキスト(7bitデータ)に変換して送られます。送り側が添付ファイルの送り方を間違えたり、受け側で添付ファイルの再変換に失敗している場合や、その変換方式に対応していない場合に出現します。変換方式にはuuencode,Base64,BinHex等があります。添付ファイルを送る場合には相手がどの方式に対応しているかを確認してから送った方がよいでしょう。もし、わからない場合はパソコンのMUAで最も普及しているBase64で送るのが無難です。またMacユーザーの方がWindowsユーザーの方へ添付ファイルを送る場合、BinHexは避けてください。相手方が専用のプログラムを入れないとデコードできない場合があります。
●メールを開くと画面が滅茶苦茶になったり、白抜き文字や文字が重なって表示されたりする。
これはメールの中身に制御文字(ASCIIコードで0x00〜0x1f,0x7f)が入っている時に起こります。主な原因は、送り側がシフトJISコードをそのまま送ってしまい、古いMTAを通った時に各バイトのMSBががゼロになった場合です。修復方法は、一旦メールの内容をファイルに保存し、それをバイナリエディタで8ビット目を修復する方法もありますが、かなりややっこしいので、送り手にもう一度、標準的な文字コード(日本語の場合はJISコード(ISO-2022-JP)、欧文の場合はLatin1(ISO-8859-1))で送り直してもらいましう。
●こんにちはの様に&#と数字;の羅列になる。
Unicodeの文字コードがそのまま送られています(実体参照)。Webページのアンケートなどから発信された場合が多いです。上の例の場合、それぞれのコードを16進数化すると0x3053,0x3093,0x306B,0x3061,0x306Fになります。これをUnicode表に当てはめると「こんにちは」と読めます。
●本文の中に < や > がたくさん含まれる。
相手がenriched形式、またはHTML形式の文字装飾付き形式で送っているが、あなたのMUAがそれに対応していない為に、タグがそのまま表示されています。相手にプレーン(テキスト)形式で送ってもらうように依頼するか、あなたのMUAを文字装飾対応のものに代えましょう。主なHTML形式非対応のMUAとしてはPostPet,AL-Mailがあります。
|