文字化けってどうして起こるの?

 

ホームページを開いたとき、不意にゾクッとする瞬間。皆さん経験あるんじゃないでしょうか?見慣れない記号の羅列... そう、文字化けです。

コンピュータのバグかな?と思って再度開いても同じです。バグではありません。では、なぜ文字化けが起こるのでしょうか?

【コンピュータ上の言語】

我々は普段、無意識のうちに1~9の数字で表される10進数を用いています。しかしコンピュータ上では0と1のみを用いる2進数が用いられます。

denmarukun.hatenablog.com

コンピュータ上では、文字は2進数の数字に割り当てられています。

これを「コード化」と呼びます。たとえば「A」は「01000001」といったように。コンピュータには「A」という文字は理解できないのです。

バナー, ヘッダ, バイナリ, 0, 一, コンピューター, インターネット, デジタル, バイナリシステム

【様々なコード体系】

上の例では8桁の2進数を用いました。つまり2の8乗通り(=256通り)の文字を表現することができ、アルファベットや他の記号を表すだけなら十分といえます。

しかしそれらに加えて日本語を表したいとすればどうでしょうか。ひらがなやカタカナだけでなく漢字まで表現したいとなるとさらに大きなデータ(2進数の桁数)が必要になりますよね。2の16乗通り(=65536通り)程度あれば十分でしょうか。

さらにアラビア文字、ハングル文字、、といった世界中の文字を加えたらどうでしょうか。

ようこそ, 言葉, 挨拶, 言語, コミュニケーション, タイポグラフィ, 書き込み, おもてなし

すべての文字や記号を同一のコード体系で表そうとすると、ひとつひとつの文字に大きなデータ(2進数の桁数)が必要となり、コンピュータで処理したり、送受信に時間がかかったりと不便なのです。

そのため、用途や歴史的事情によって様々なコード体系がつくられました。

代表的なものとして「ASCII」と呼ばれるものがあります。

これはアルファベット・数字・記号などを7ビットの情報量(最大128文字)で表現するコード体系です。コンピューターの処理単位は8ビットで256文字を扱うことができ、残りの128文字分はメーカーや国により異なる文字や記号が収録されています。

日本語用の文字コードとしては、「Shift-JIS」などがよく用いられます。やはり日本語はな文字の種類が多く、16ビットで構成されるコード体系となります。

【文字化けが起こる原因】

先に述べたように、文字のデータ量を削減するために、環境によって様々なコード体系が用いられていますが、その代償といえるものがあります。それが「文字化け」です。

書く側と読む側のコード体系が異なると、どのようなことが起こるでしょうか?

対応する2進数データも異なるために文字化けが起きてしまいまうんですね。

「こんにちは」⇒「縺薙s縺ォ縺。縺ッ」

【まとめ】

コンピュータ上では文字は2進数の数字に割り当てられる。ただしすべての言語を同一のコード体系で表すことは現実的ではない。そこで様々なコード体系がつくられた。

しかし、書く側と読む側のコード体系が異なると、対応する2進数データも異なるために文字化けが起きてしまう。