|
|
ダレでもわかる電子メール
インターネットには、いろいろなコンピュータが接続されています。皆さんが使っているパソコンから、ひと部屋占有してしまう大型コンピュータまで、それぞれに役割分担があります。ホームページを発信するためのWEBサーバー、コンピュータのプログラムやファイルを転送するためのFTPサーバ、そして電子メールをやり取りするためのメールサーバなどがあります。
英語と日本語の文字には、その数に大きな違いがあります。英文字は小文字、大文字や記号、数字を合わせても100種類くらいですが、日本語は平仮名、カタカナ、漢字を合わせると通常使っている文字だけでも2000種類以上になります。コンピュータは、それぞれの文字をルールに従って数字に置き換えて送り(符号化と言う)、受け取り側では、そのルールを逆に変換して、私たちが理解できる文字として表示します。元々軍事用としてアメリカで開発されたインターネットは、英語が使えればよかったので、文字数も100種類位で十分だったのです。そのため、メールサーバには、いまだに100文字程度しか理解出来ないコンピュータがつながっています。このまま、あなたが日本語のメールを送った場合、運が悪ければ、そのコンピュータを通過した時に文字化けを起こして相手には記号だらけの意味不明メールが送られてしまいます。この文字化けをさける為、また文字以外の画像(写真や壁紙など)やプログラムも電子メールで送る事が出来るように色々な方法が考え出されました。
どの方法を使っているかは、メールヘッダのContent-Typeフィールドを見ればわかります。
メールヘッダの表示の仕方
- OutlookExpressの場合
表示したいメッセージを右クリックしてプロパティを開いた後、詳細タグをクリック。
- NetscapeMessangerの場合
メニューバーの表示からヘッダ、すべてを選ぶ。
- その他のMUAの場合
それぞれのヘルプを参照してください。
言語別 標準的な符号化方法
以下に言語(ファイルタイプ)別の最も一般的な文字コードと符号化が必要な場合は、それを示します。これ以外にも、たとえば西ヨーロッパ言語や日本語をbase64で符号化する事も可能ですが、例外的な方法は文字化けの要因になる可能性があります。
- 英語の場合 (US-ASCII)
- 文字セットとしてASCIIが使用され、符号化はされない。
- アルファベット、数字、記号を合わせて94文字と34文字の制御コードなどから成り立っている。
- Content-Typeのcharsetは"us-ascii"または省略。
- Content-Transfer-Encodingは"7bit"になる。
ASCII文字セット SPはスペース、ピンク地は制御文字
読み方)AはHEX(16進数表記)で41、BIN(2進数)で01000001
HEX |
0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | A | B |
C | D | E | F |
0 |
NUL | SOH | STX | ETX |
EOT | ENQ | ACK | BEL |
BS | HT | LF | VT |
FF | CR | SO | SI |
1 |
DLE | DC1 | DC2 | DC3 |
DC4 | NAK | SYN | ETB |
CAN | EM | SUB | ESC |
IS4 | IS3 | IS2 | IS1 |
2 |
SP | ! | " | # |
$ | % | & | ' |
( | ) | * | + |
, | - | . | / |
3 |
0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | : | ; |
< | = | > | ? |
4 |
@ | A | B | C |
D | E | F | G |
H | I | J | K |
L | M | N | O |
5 |
P | Q | R | S |
T | U | V | W |
X | Y | Z | [ |
\ | ] | ^ | _ |
6 |
` | a | b | c |
d | e | f | g |
h | i | j | k |
l | m | n | o |
7 |
p | q | r | s |
t | u | v | w |
x | y | z | { |
| | } | 〜 | DEL |
- 西ヨーロッパ言語の場合 (ISO-8859-1)
- 一般的にISO-8859-1(Latin1)文字セットが使用される。
- ISO-8859-1(Latin1)は西ヨーロッパ言語が使用できるようにASCIIを拡張したもの。
- 通常quoted-printableで符号化される。
- Content-Typeのcharsetは"iso-8859-1"、
- Content-Transfer-Encodingは quoted-printable になる。
- US-ASCII以外の文字や制御文字は = の後に16進表記の文字コードで表される。
- スペース文字と = 以外のUS-ASCII文字は符号化されない。(そのまま読める)
- 1行が76文字以内になるように = と改行文字(CRLR)が挿入される。
- スペイン語特殊文字は、次の様になる。
(IE4.0またはNN6以上でご覧下さい。それ以外ですと正常に表示できません。)
quoted-printable符号化方式 スペイン語特殊文字のみ抜粋
文字 | 符号化 | 文字 | 符号化 | 文字 | 符号化 | 文字 | 符号化 |
Á | =C1 | á | =E1 | É | =C9 | é | =E9 |
Í | =CD | í | =ED | Ó | =D3 | ó | =F3 |
Ú | =DA | ú | =FA | Ñ | =D1 | ñ | =F1 |
Ü | =DC | ü | =FC | ¡ | =A1 | ¿ | =BF |
ISO-8859-1(Latin 1)文字セット
00から7F(16進表記)はUS-ASCIIと同じ
HEX |
0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | A | B |
C | D | E | F |
A |
| ¡ | ¢ | £ |
¤ | ¥ | ¦ | § |
¨ | © | ª | « |
¬ | | ® | ¯ |
B |
° | ± | ² | ³ |
´ | µ | ¶ | · |
¸ | ¹ | º | » |
¼ | ½ | ¾ | ¿ |
C |
À | Á | Â | Ã |
Ä | Å | Æ | Ç |
È | É | Ê | Ë |
Ì | Í | Î | Ï |
D |
Ð | Ñ | Ò | Ó |
Ô | Õ | Ö | × |
Ø | Ù | Ú | Û |
Ü | Ý | Þ | ß |
E |
à | á | â | ã |
ä | å | æ | ç |
è | é | ê | ë |
ì | í | î | ï |
F |
ð | ñ | ò | ó |
ô | õ | ö | ÷ |
ø | ù | ú | û |
ü | ý | þ | ÿ |
- 日本語の場合 (ISO-2022-JP)
- 文字コードは ISO-2022-JP が使用され、符号化はされない。
- 特別な意味を持った記号(エスケープシーケンス:制御文字+1バイト文字2個)を付けて、この記号があった場合は、英語2文字分を日本語の1文字に当てはめるというルールを作り送る方法。日本語メールはほぼ100%この方式を利用している。
- 半角カタカナや機種依存文字はこのルールに入っていないので使うべきではない。
- Content-Typeのcharsetは"iso-2022-jp"になる。
- Content-Transfer-Encodingは"7bit"になる。一部に"8bit"と記すMUAもある。
- 1行の最初と終わりはASCIIでなければならない。つまり、全部日本語のメールでも各行の先頭に日本語開始エスケープシーケンス、末尾に ESC(B がなければならない。
エスケープシーケンス
エスケープシーケンス | 文字セット |
ESP(B | ASCII |
ESP(J | JIS X 0201-1976 |
ESP$@ | JIS X 0208-1978 |
ESP$B | JIS X 0208-1983 |
ISO-2202-JP(JIS X 0208)文字セット
ひらがなのみ抜粋
HEX |
0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | A | B |
C | D | E | F |
242 |
| ぁ | あ | ぃ |
い | ぅ | う | ぇ |
え | ぉ | お | か |
が | き | ぎ | く |
243 |
ぐ | け | げ | こ |
ご | さ | ざ | し |
じ | す | ず | せ |
ぜ | そ | ぞ | た |
244 |
だ | ち | ぢ | っ |
つ | づ | て | で |
と | ど | な | に |
ぬ | ね | の | ぱ |
245 |
ば | ぱ | ひ | び |
ぴ | ふ | ぶ | ぷ |
へ | べ | ぺ | ほ |
ぼ | ぽ | ま | み |
246 |
む | め | も | ゃ |
や | ゅ | ゆ | ょ |
よ | ら | り | る |
れ | ろ | ゎ | わ |
247 |
ゐ | ゑ | を | ん |
| | | |
| | | |
| | | |
- 画像等のバイナリデータの場合
- 通常base64という符号化方式が使われる。3文字分のデータを4文字のUS-ASCII文字に変換する方法。
- 具体的には3バイト(24ビット)のデータを4つの6ビットデータに変換する。その6ビットデータを下の表に合わせてASCII文字化する。
- Content-Transfer-Encodingは"base64"になる。
- 1行が76文字以内になるように改行文字(CRLR)が挿入される。
base64符号化
6bit値 | 文字 | 6bit値 | 文字 | 6bit値 | 文字 | 6bit値 | 文字 |
000000 | A | 010000 | Q | 100000 | g | 110000 | w |
000001 | B | 010001 | R | 100001 | h | 110001 | x |
000010 | C | 010010 | S | 100010 | i | 110010 | y |
000011 | D | 010011 | T | 100011 | j | 110011 | z |
000100 | E | 010100 | U | 100100 | k | 110100 | 0 |
000101 | F | 010101 | V | 100101 | l | 110101 | 1 |
000110 | G | 010110 | W | 100110 | m | 110110 | 2 |
000111 | H | 010111 | X | 100111 | n | 110111 | 3 |
001000 | I | 011000 | Y | 101000 | o | 111000 | 4 |
001001 | J | 011001 | Z | 101001 | p | 111001 | 5 |
001010 | K | 011010 | a | 101010 | q | 111010 | 6 |
001011 | L | 011011 | b | 101011 | r | 111011 | 7 |
001100 | M | 011100 | c | 101100 | s | 111100 | 8 |
001101 | N | 011101 | d | 101101 | t | 111101 | 9 |
001110 | O | 011110 | e | 100110 | u | 111110 | + |
001111 | P | 011111 | f | 100111 | v | 111111 | / |
メッセージヘッダの拡張
本文は通常に読めるのに、メールのタイトルだけが文字化けして読めない事があります。海外のメールサーバを使っている場合、相当な確率で文字化けします。これは、メッセージ本体に比べ、まだヘッダの多言語化に対応したサーバーやMUAが少ないためです。海外のメールアドレスや相手が日本語以外の環境で使用している場合は、メールの宛先、差出人、タイトルには日本語は使わず、アルファベット(US-ASCII)で書いた方がよいでしょう。
符号化方法には以下の2種類があります。
- Q符号化
- MIMEのquoted-printableに準じる方法
- quoted-printableに比べ下記の相違点がある。
- スペース文字は'_'に置き換えてもよい。
- ? は =3F 、 _ は =5F に変換する。
- 文字セット、符号化方法、データ本体の順で続き、それぞれ ? で区切られる。
例 =?iso-8858-1?q?xxxxx?= xxxxxはQ符号化された文字列
- B符号化
- MIMEのbase64に準じる方法
- 文字セット、符号化方法、データ本体の順で続き、それぞれ'?'で区切られる。
例 =?iso-2022-jp?b?xxxxx?= xxxxxはB符号化された文字列
|