WWW における漢字コード


以前は JIS コード使った方が良いと言われていた事もあったようですが、現 在は JIS, Shift_JIS, EUC-JP が完全に混在しています。特にパソコンからイ ンターネットに繋げる人の急増により、WWW での使用は Shift_JIS が一番多 いと思われます。その流れを止める事は不可能に近いです。

大抵のブラウザは JIS, Shift_JIS, EUC-JP を自動認識してくれるので、問題 は無いように見えます。しかし、問題が無いならわざわざこんな事を書いたり しません。

まず、漢字コード巧く見分けられない事があります。これが実にやっかいです。 文字化けして全く読めなせん。特に半角カナを含んでいる Shift_JIS と EUC-JP は見分けがつき難くなります。発信側・経路に問題が無い場合、それ はブラウザを作ってる所が頑張るしかありません。

最近は、<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">と書いておきながら、実際は Shift_JIS で 送られてくる事がよくあります。Proxy サーバ等が途中で漢字コードを変換し てしまった場合は発信側に問題はありませんが、発信側が本当に Shift_JIS で書いてある場合が殆んどでしょう。タチが悪い事に、UNIX上のブラウザ (Netscape Navigator の事とします) だと文字化けするけれども、Windows や Mac 上のブラウザ(Netscape, IE)だと文字化けしないようなのです(Windowsや Mac 上でも文字化けするなら作成者側で気付いてるでしょう) 。ブラウザ側が charset=ISO-2022-JP の指定を無視して漢字コードを解釈すれ ば文字化けしないという、変な(ブラウザ側での)解決法です。

ではどうして上記の様な現象が起るのでしょうか。まず原因として考えられる のは、HTML作成ソフトが腐ってる事です。Shift_JIS でファイルを作ってるの に、charset=ISO-2022-JP と指定する HTML作成ソフトがあるの です。これは作ってる所が勉強するしかありません。HTML作成ソフトの作成者 に文句を言いましょう。次が HTML作成はちゃんと JISコードでファイルを作っ たが、それをエディタで修整する時に漢字コードが変換されたと言う物です。 これは一緒に charset=ISO-2022-JP の部分を書き換えるか、も う一度 JISコードに変換しましょう。

また、こんなケースもあります。上記のミスをしている人にメールで聞いてみ た所、なんと「charset=ISO-2022-JP」は「自動設定」だと書い てある雑誌があり、それを鵜呑みにしてしまったというのです。どの雑誌だか は分かりませんが、迷惑な雑誌(ライター)もあったものです。

なお、EUC-JP で書いたのに charset=ISO-2022-JP と書いたり、 charset=Shift_JIS と書いたりすると、UNIX 上のブラウザだと 文字化けしないが、Windows 上のブラウザだと文字化けするページが出来上が ります。JISコード で書いたのに charset=EUC-JP と書いたり、 charset=Shift_JIS と書いたりすると、UNIX 上のブラウザでも Windows 上のブラウザでも文字化けするページが出来上がります。

そして、アメリカ産のソフトだと思うのですが、Shift_JIS で漢字コード `82 A0' の「あ」なら`&#130;&#160;'と 言うふうに変換するソフトもあります。これは 8bitまで使う文字形態がある と言う事を知らずにソフトを作っているためです。

稀なケースとして、ファイルを転送する時に先頭(と最後)に変なコードが含ま れていたというのがあります。どうやらそれはサーバーのバグか設定ミスだっ たようです。


NetNews では半角カナは禁止でしたが、WWWではどうでしょうか?実は半角カ ナは使わない方がありがたいのです。どう言うわけか半角カナを使われると、 そこの部分が文字化けしたり、その場所以降が文字化けする事があるのです。

Shift_JIS の半角カナで、「ウソ」と書かれているとします。これは、 `B3 BF'です。このコードは、EUC-JP では「蛙」を意味します。 「これはウソです」と半角カナ交じりで文章を書くと、「これは蛙です」とな る事があるのです。どうやら、(UNIX上の)ブラウザは途中まで Shift_JIS と して解釈して表示するのですが、半角カナの所だけは EUC-JP として解釈する ようなのです。この「ウソ」は 2オクテットで、EUC-JP に対応する文字があ りましたが、1オクテットだったりして対応する文字が無い場合、文字化けし ます。これは Shift_JIS を正しく解釈しないブラウザの方が悪いと言えるの ですが、余計な文字化けを生じさせたくないのなら半角カナは使わない方が良 いでしょう。

半角カナは JIS から削除される予定なので、これを機会に使用を止めるとい いかも知れません。


実は重要な点として、「URI に漢字を使ってはいけない」と言う事がります。 漢字と書きましたが、ひらがななどでも同じです。これは URI の書き方を定 めた RFC2396 に、漢字が使っても良い文字とされていないからです。では漢 字を使うとどのような事が起こるのでしょうか? Shift_JIS と EUC-JP 、さ らに JIS では同じ文字でも割り当てられているコードが異なります。例えば 「あ」は Shift_JIS では `82 A0' ですが、EUC-JP では `A4 A2'です。すると、サーバーに送られる URL が違ってきま す。

サーバーに「あ.GIF」と言うファイルがあって、それを転送す る事を考えます。サーバーに Shift_JISでそのファイルネームが記述されてる とします。つまり、`0x82A0.GIF'の様な感じに記述されてると します。そして HTML 内で <img src="あ.GIF">書かれて るとします。

Windows や Mac のブラウザは HTML を Shift_JIS で解釈して 「%82%A0.GIF」とエンコードしてサーバーに送ります。UNIX 上 のブラウザだと、HTML を一度 EUC-JP に変換して解釈し、 「%A4%A2.GIF」とエンコードしてサーバーに送ります。 Shift_JIS だと同じコードのファイルがあるのでサーバーは受付けますが、 EUC-JP だと当然そんなファイルは無いと返してきます。HTML に <img src="%82%A0.GIF"> と記述すればそのファイルを UNIX 上のブラウザでも見る事が出来ますが、この様に面倒臭くて可読性が落 ちるので、最初からファイル名に漢字を使わない方が良いでしょう。


よく WWW ページに「Sorry! This HomePage is Japanese only!」等と書いて いる人がいます。これはいいですが、「Sorry! This HomeP age is Japanese only!」と 2バイト文字で書いている 人がいます。こうすると英語圏の人など、日本語を扱えない環境の人は読めま せん。日本語を読めない人に読んでもらうのに、日本語を扱える環境を揃えな ければならないという本末転倒な事になります。


前へ 次へ
戻る
(c)1997-2001 村上 智一
Last modified: Tue Mar 6 15:47:25 2001