前号: No 223 / 次号: No 225 / 一覧に戻る
前回からメールの裏側の仕組みについて解説しています。 今回は、メールで日本語を送る舞台裏の仕組みとメール内容が化け る理由について解説します。1. メールは英数字しか送れない
前回、SMTP、POP3、IMAP4といったパソコン(PC)とメール サーバ間の通信プロトコル(通信手順)について解説をしました。 この中ではSMTPが1980年頃と一番古いものです。当時はネット経由 でメッセージ(電子メール、eメール)が送れること自体が画期的 なことでしたから、文字さえ送られれば十分と考えられていました。 実際、SMTPでは英字(大文字、小文字)、数字、一部の記号など しか送ることができません。 そのため、最初期のインターネットメールは日本語はもちろん無理 で、本文をローマ字や英語で打つしなかったそうです。 この制約で困るのは日本だけではありません。アキュート付き文字 (Eの上に’記号が付いてる)を使うフランスやウムラウト文字 (OやAの上に点が2つ付いたもの)を使うドイツも同様に表記が できませんでした。2. フランス語を送る例
この不便な制約はずっと活きていて、英語圏以外の言語で書かれた メールは何らかの工夫をして、その国で使う文字を英数字に変換 して送っています。 例えば、フランス語で「フランス語」のことをfrancais(ホントは cの下にセディーユというマークが付く)と書きます。 これをメールで送るにはどうすれば良いでしょう? セディーユ付きのcは英文字ではありませんから、SMTPのルール上 そのまま送るとルール違反です。 そのため、こういった特殊な文字をSMTPで送れるようにするために いくつかの方法が用意されています。 この例のようにだいたいは英数字で済むけれど、一部に英数字で ない文字を使う場合は、quoted-printable(クオーテッドプリン タブル)という方式を使います。 francais(ホントはcの下に...以下略)をメールで送る時はメール ソフトが次のような変換をし、メールサーバに渡します。 以下の =C3=A7 という6文字がセディーユ付きのcの1文字を示し ます。 fran=C3=A7ais このように、セディーユ付きのcやアキュート付記のEが出てくる 都度、このような6文字への変換が行われます。 もちろん、メールを書く方がこんなわけのわからない書き方をする 必要はなく、送信する時も受信する時もメールソフトで変換して くれます。 だから、メールを書く人はfrancaisと書くだけで、メールを読む人 もfrancaisと読めるわけです。 余談 ホントに"fran=C3=A7ais"と文面に書きたい時はどうするんだ? というイジワルなことを考える人のために補足しときます。 この場合は、次のようになります。 "fran=3DC3=3DA7ais"と書きます。("="が"=3D"の3文字に置き 換えられます)3. では日本語メールは?
英文字メイン、一部違う文字があるという程度ならquoted-printable でOKなのですが、日本語だとあまりに効率が悪い(日本語1文字 の表記に6文字が必要)ので全く別の方法を使います。 これはISO-2022-JPと呼ばれる方法で、ISOという団体が規定した ものです。ISOはスイスのジュネーブに本部を置く非政府機関で International Organization for Standardization(国際標準化 機構)の略称です。 この方式は日本だけでなく、キリル文字を使う東ヨーロッパ圏や アジア圏で広く使われています。 この方式では最初に「ここから○○語の文字で表記しているよ」 という特殊な文字パターン(エスケープシーケンスと言います)を 付け、続けてその言語のデータを書き、最後に「ここから英字に するよ」という別のエスケープシーケンスを付けます。 例えば、「ここから日本語」を示すエスケープシーケンスは次の 3文字です。 ESC $ B また、「ここから英字(ASCII)」というエスケープシーケンスは 次の3文字です。 ESC ( B 補足: 上のESCというナゾの文字は エスケープ記号というもので、 改行記号などと同じ制御記号と呼ばれる文字で、画面上には 表記されないため、CR(Carriage Return:復帰)、LF(Line Feed:改行)、HT(Horizental Tab:水平タブ)のように2文字 や3文字で意味を表記します。 エスケープ記号はESCと表記し、続く文字(文字列)を含めて 特殊な意味を持たせる時に使います。 このエスケープシーケンスを使った場合、日本語のメール本文は次 のような構造になることが多いです。 ESC $ B 日本語の本文(1行目)ESC ) B ESC $ B 日本語の本文(2行目)ESC ) B ESC $ B 日本語の本文(3行目)ESC ) B english text(4th Line) ESC $ B 日本語の本文(5行目)ESC ) B 余談 細かい話ですが、JISでの全ての日本語の文字はSMTPが許す英 数字の範囲で表現できる仕組みとなっています。 これはJISの設計時点でこのISO-2022との整合性を考慮していた 点と、日本のインターネット黎明期を支えたJUNETの先見性に あると筆者は思います。4. なぜ日本語メールが化けるのか?
最近は「よくある化け方」へのメールソフト側の対応が進んでいる ためもあり、メールの文字化けに会う頻度は落ちています。 それでも、文字化けやデータの欠落が起きるケースはあり、原因も それぞれです。 パターン1:各行の行頭が$Bや(Jで、文字が全て英数字 これは上述の「ここから日本語」を示すためのエスケープ記号が どこかのメールサーバで削除されてしまったパターンです。 このパターンでは!!(日本語の全角空白)が多かったり、行末に !#(日本語の。)が多かったりといったパターンが見られます。 これは利用者側の対策ではどうにもなりません。 メールサーバの動作が疑わしいので、メールサーバの管理者に 相談してみるのが良いでしょう。 パターン2:見たこともない漢字やカタカナだらけ 最近は減りましたが、シフトJISやEUCと呼ばれる形式の文字を そのまま送るという、SMTPのルールを全く無視したメールで発生 します。(運良く発生しないこともあります) そもそもが送り主がSMTPのルール無視したのが原因ですので、 送信者のメールソフトの設定を確認してもらいましょう。 パターン3:添付ファイルが壊れている これも最近ではあまり見なくなりました。 添付ファイルが壊れる原因は、メールソフト側での添付データ の扱い方にあります。要は両方のメールソフトが異なった解釈 をしてしまい、正しくデータを復元できていないというもの です。 この場合、送受信ともに使用するメールソフトを変更すること で正しく読み取れる場合があります。 回線が不安定でデータが化けているということもないとは言え ませんが、日本国内では考えにくいです。 パターン4:添付ファイルが消えている これはデータが化けるパターンというわけではありませんが 最近では一番出会いそうなパターンです。 これはメールサーバ側で意図的に削除しているのが大半です。 ファイルの中に特定のマルウェア(ウイルスなどの悪意のある ソフトウェアのこと)と同様のパターンが見つかった、メール の大きさが制限値を越えている場合などがあります。 送信元のメールサーバで削除するケースもあれば、受信先の メールサーバで削除するケースもあります。 いずれにしても、メールサーバの管理者に相談するのが良いで しょう。5. まとめ
SMTPというルールでは英語でのメール送信しか考慮されていないと いう問題があるのですが、ルールとして全世界で流通してしまい、 今更どうにもならないのが現状です。 その制約の中で、各言語のメールを書くためにいろいろな工夫が 行われています。 スペイン語、フランス語、ドイツ語といった西ヨーロッパの国々 では、quoted-printable という方式を用いて、各国で利用できる 文字だけを特殊表記する方式を採ることが多いようです。 一方で、キリル文字を使う東ヨーロッパや独自文字を用いるアジア 圏ではエスケープシーケンスを用いて言語を指定するISO-2022方式 が用いられています。 メール内容が化ける原因はいくつかあるのですが、最近はほぼ発生 しなくなっています。むしろ、セキュリティ対策として添付ファイ ルをメールサーバ側で削除するパターンが増えているようです。 今回は、メールで日本語を送るための仕組みについて解説しました。 次回も、もう少しメールの裏側の仕組みについて解説をします。 次回もお楽しみに