ホームページの HTML 文書に使用するエンコード
21 世紀、ブラウザのじゅうぶんに進歩した今の時代、もはや
エンコード判別のロジックの観点からすれば、EUC が一番判別を誤りやすく、文字化けしやすいです。Shift_JIS は判別が比較的容易です。JIS コードはほぼ間違うことは無いでしょう。しかし、もはや 95 %のユーザが使っているブラウザは、EUC コードですら、ほとんど判別を誤ることはありません。
さらに、どのコードが日本語サイトに最もふさわしいというコンセンサスは現在ありません。(あるとすれば、それは Unicode UTF-8 になるでしょう。UTF-8 はまだ時期尚早です。)
特殊な用途向けに作成されたサイト──たとえば絶対に UNIX ユーザしか見ないようなサイト──ならば、EUC コードに特化すると、喜ばれるかもしれません。また、CGI プログラムとの親和性を考えるのなら、EUC が便利でしょう。
が、通常エンコードにこだわる必要はありません。
<HTML> <HEAD> <!-- 美乳 --> <TITLE>わたしのホームページ</TITLE> </HEAD>
昔、私のチャットでは、“美乳”という2文字を、HTML文書の上あたりに書いておけば、そのページは文字化けしないというウソかホントかわからない噂が行き交いました。その後、より健全な “雀の往来”に代わったりもしました。
これは、文字コード表を見れば、一目瞭然。シフト JIS では 0xFD、0xFE というバイトは使われていません。「美乳」という字は、EUCコードで C8 FE C6 FD です。ここにはシフト JIS では絶対に出現しない 0xFD や 0xFE が含まれていますので、EUCコードと断定することができます。雀、往も同様に EUC コードだと決め撃ちできる文字です。これらの美乳効果が期待できる文字を「美乳テーブル」として、下に並べました。
・第2バイトが 0xfd
EUC-JP| 0 1 2 3 4 5 6 7 8 9 A B C D E F
------+------------------------------------------------
A | ◎
B | 胤 往 拐 茅 棋 享 屑 拳 口 狛 冊 持 収 傷 埴 雀
C | 箭 増 蛸 喋 蹄 統 乳 駁 眉 幅 方 慢 油 理 練
D | 傴 劑 哈 圄 奬 屎 廐 悃 戔 撈 暾 椌 檢 沱 漲 燵
E | 瓔 癬 磊 笶 糺 缸 脯 茉 蕘 蝮 襠 譚 踴 逹 鍄 陜
F | 顯 髱 鵆 龜
・第2バイトが 0xfe
EUC-JP| 0 1 2 3 4 5 6 7 8 9 A B C D E F
------+------------------------------------------------
A | ◇
B | 蔭 応 改 萱 棄 京 屈 捲 向 込 刷 時 周 償 飾 裾
C | 線 憎 只 寵 逓 到 入 麦 美 服 朋 満 癒 璃 聯
D | 傲 辨 咨 圉 奩 屓 廏 悚 戛 撼 暼 棍 檣 沾 滌 燼
E | 珱 癰 磬 筐 紆 缺 腋 苙 蕈 蝙 襞 譫 蹊 迸 錮 陞
F | 顰 髷 鵈 龠
EUCコードで Web を構成するサイトオーナーは、「美乳テーブル」のどれかの文字をHTML上部に入れておくことで、文字化け率を減らしてくれることでしょう。難しい漢字も含まれていますが、すべて、第1水準、第2水準の漢字ですので、「美乳テーブル」の、いずれの文字も機種依存文字ではありませんので、安心して使えます。
なお、シフト JIS や、JIS のページでは、美乳効果はありません。が、文字コードを問わず、ページの上部で積極的に日本語を埋め込むことは、ダウンロードの早い時期に文字コードを決定させる助けとなります。
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
これは、HTML 文書の文字コードを、ブラウザの自動判別に任せず、HTML 側で宣言する例です。ブラウザーは、この指定をほぼ信用し、その文字コードで表示しようとします。
文字コードによって、
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> ← シフト JIS <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> ← EUC <META http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"> ← JISと、それぞれ記述するよう決められています。(ハイフンとアンダースコアの違いに注意してください。アルファベットの大文字小文字は問われません。)。この指定をしておけば、ほぼ問題ありません。
過去において、3.1 で述べた記述には些細な問題がありました。
<META http-equiv="Content-Type" content="text/html; charset=X-SJIS"> ← シフト JIS <META http-equiv="Content-Type" content="text/html; charset=X-EUC-JP"> ← EUC
数年前は、Netscape Navigator 2.x が無視できないシェアだったので、このような X- 付きの指定をした方がよい、という風潮がありました。あなたがまだ、Netscape Navigator 2.x の訪問者をサポートしようとするなら、X- 付きの指定をする方が好まれるでしょう。企業のサイトは、できるだけ多くの顧客を抱えたいという理由で X- 付きの指定が目立ちます。そして、X- 付き指定は規格外の宣言なのですが、ポピュラーに用いられている方法であり、特に害もありません。
ブラウザー固有の問題として、Netscape Navigator 4.x およびそれ以前のバージョンが上げられます。
このブラウザーは他のブラウザと比べて、決して文字判別アルゴリズムが劣っているというわけではありません。しかし、<META> タグでcharsetを指定したページを見た直後に、別のコードで書かれたページを見ると、設定が引きずられるために非常に化けやすくなっています。また、「戻る」「進む」ボタンを使って、HDD にキャッシュされたページをブラウズする際にも、化けやすくなっています。こういうときはリロードすれば治るのですが、訪問者に負担を強いることになりました。ですので、Netscape Navigator 4.x ユーザをサポートしようと思うならば、<META> タグによる指定など、初めからやらない方がよいという結果になっています。
いろいろと問題点をあげましたが、あなたのサイトを訪れる訪問者が使っているブラウザーが、世間一般で言われるブラウザ比率と同程度であれば、3.1 で述べた charset 指定が正当です。