![]() | ||||||
![]() |
【PR】 転職を成功させるインターネット活用術 【PR】 家電品の安さ、品揃えに自信あり! 【PR】 マジックトーカーズなど英語教材比較 【PR】 Windowsサーバをお探しなら、 |
|||||
![]() |
・(序論)文字化けの発生メカニズム概論と解析方法![]() ![]() 安心の24時間サポート!! →WADAXレンタルサーバー ![]()
「ここではきものをぬいでください」。あなたは何を脱ぎますか? 「ここでは、着物を脱いでください」の意味に取れば、「着物」を脱ぐことになります。「ここで、履物を脱いでください」と取れば、靴やサンダルを脱ぐでしょう。このように平仮名だらけの文章は読みにくく、コミュニケーションにおいて誤解を招く可能性があります。 そこで、人間はコミュニケーションする際に、決まりごとを必ず持ちます。例えば、
「1」については、例えば20年ぐらい前になりますが、国語の教科書に載っていた文章が印象に残っています(細部は違うと思います)。「刑事は血まみれになりながら逃げる泥棒を追った。」という文章があったとして、「血まみれ」になっているのは、刑事でしょうか? 泥棒でしょうか? ここで句読点の重要性が出てきます。『刑事』が血まみれになっているならば、「刑事は血まみれになりながら、逃げる泥棒を追った。」とすべきでしょう。血まみれになっているのが「泥棒」であるならば、「刑事は、血まみれになりながら逃げる泥棒を追った」と。もしくは、句読点ではまだ分かりにくいので、完全に語順を変えて、「逃げる泥棒を、刑事は血まみれになりがなら追った」とするのではないでしょうか? 「3」については、例えば、玄関に「ここではきものをぬいでください」とあれば、「靴」のことであると判断するでしょうし、風呂場にその掲示があったのならば、「着物」を脱ぐでしょう。 文字化けも同じように言えます。コンピュータ上の世界では、究極的には2進数の世界であり、全ての文字列は0か1かの電気信号になりますし、もう少し人間に分かりやすく16進数にしたとしても、同じ文字列が、区切る場所によって意味が変わったりします。ですから、『どの読み方』をするのかということを定義したものが必要になってき、それこそが「文字コード」であると言えます。 文字コードには、日本で使われている主なものとしては、「Shift_JIS」「EUC-JP」「JIS(ISO-2022-JP)」「UTF-8」などがあります(これだけたくさんあるのは、歴史的な経緯のためであったり、それぞれ一長一短あるためです。)。例えば、JISでは、エスケープシーケンスというものが用いられて、2バイト文字とアルファベットなどの1バイト文字との切り替わりが分かるようにしています。句読点のような役割をしているのですね。
この宣言こそが、有名なメタタグであったり、後々何回も紹介します、htaccessによる文字コードの宣言だったりするわけです。繰り返しますが、この宣言がない場合、「このページにはShift_JISには存在しないはずの文字コードが現れているから、Shift_JISであるはずはない。この文字コードの現れ方はEUC-JPに違いない」と判断し、EUC-JPと判断したりするわけです。つまり、これはブラウザが「文脈」で判断していることになります。 ただし、人間でも文脈の読み間違いからミス・コミュニケーションがありうるように、文字コードでもそういう読み間違いが様々な理由から存在し、それが文字化けの原因になります。先述のように、異なる文字コード間でも、限られた文字コード領域を複数の文字コードが利用しているためにコードの重複が見られ、そのために有名な半角カタカナの文字化けのようなことが起こります。このホームページでは、まさしく、そのような読み間違いの原因になる現象をかなり豊富に、かつ詳細に検証しているつもりである。 一つ覚えていただきたいことは、「ここではきものをぬいでください」というものが、「履物」を脱ぐのか「着物」を脱ぐのかを論争する余地はあったとしても、そこで髪の毛を切ったりとかテレビを見るとか、全く別の言葉には解釈されることはないということです。つまり、文字化けであっても、化けるには化けるだけの理由や規則性があるのであって、むやみやたらに文字化けしているわけではないのです。それがブラウザのバグが原因であれ、私たちWebmasterの問題であれ、でです。 例えば、Shift_JISで半角カタカナの「アイ」は「0xB1B2」ですが、これはEUC-JPでは「渦」という漢字の文字コードになります。つまり区別がつきません。なので化けることがありますが、これが「朝(EUC-JPでは0xC4AB)」に化けたりはしません。化学反応と同じです。
<<文字コード一覧表に親しむことが、文字化け研究の第一歩>> WindowsではIMEのバージョンによって様々でしょうが、IME2002の場合、左の画像のようにIMEパッド(虫眼鏡がアイコンにあるもの)をクリックして表示されるポップアップの中に「文字一覧」というのがありますから、これをクリックすると、文字一覧を確認できます。その一覧表の中のそれぞれの文字にカーソルを合わせると、Shift_JISで「0x82a0」などと16進文字コードが表示されます。
また、当ホームページでは、より気軽に文字コードを調べることができる手段として、こちらのようなFlashを利用したURLエンコード(Shift_JIS版)を利用しているところが多くあります。URLエンコーダーやデコーダーはこちらで無料配布しています。利用法については順次、本文中で説明します。 次のページでは、「ネスケ4.Xで特定の文字(試・時・事・私など)が文字化けする場合」を取り上げます。
![]() ![]() ![]() ![]() ![]() |