コンピュータが扱えるのは数値だけなので、文字を扱う場合にはそれぞれの文字に番号を付けて「○○番だったら△を表示」のような取り決めをして文字を表示しています。
この、文字の番号のつけ方が何通りか、メジャーなところでは JIS、Shift-JIS、EUC-JP、UTF-8、UTF-16など複数存在します。
例えば"文字"はShift-JISでは38326、36506ですが EUC-JPでは51896、48122です。
Webの場合、どの文字コードを使っているかはソースの先頭に書いてあります。
※このページのソースを見る:IEでしたらこのページを右クリックして[ソースの表示]:と<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"/>と書いてあり、EUC-JPであることが分かります。
で、Shift-JISで書いてあるのに「EUC-JPで書いてあるよ!」と宣言してしまうと数値と文字の対応が狂って意図しない文字が表示されてしまいます。
EUC-JPで書かれた"文字"をShift-JISの対応表にてらして変換すると"ハクサ・"になります。
これが文字化けの基本的なメカニズムです。
お礼
ありがとうございます。 それぞれの文字に番号つけているんですね。 説明も分かりやすくて勉強になりました!