株式会社ライブキャストロゴ 株式会社ライブキャスト

head要素のmetaタグに指定する文字コード「UTF-8」について、オンラインプログラミング教室のHTML入門で時々質問がありますので、まとめておきたいと思います。

動画での説明の方が良い、という方はこちらをどうぞ。

文字コードとは?

コンピュータは、文字も内部的には数値として扱います。
“あいうえお”という文字にも番号がついています。
背番号みたいなものです。
文字に割り当てられたすべての番号をまとめているものを文字コードと言います。文字と番号の対比表のようなものです。

コンピュータは英語圏で生まれたので、当初、英数字(といくつかの記号)しか扱う必要がありませんでしたが、世界中にコンピュータが普及するにつれ、たくさんの言語に対応する必要が出てきました。

英数字は1バイト文字です。ASCIIコード(※)といいます。
1バイトは256通りの値を持つことができます。
日本語はひらがな・カタカナ・漢字があり、256通りの1バイトでは足りません(表現できません)。
そこで生まれたのが2バイト文字の「JISコード」、「Shift JIS コード」です。

※ ASCIIコードは厳密には英数字だけでなく、キーボードから入力されるような英数字といくつかの記号、改行のような制御文字を持っています。

WindowsではShift JISから派生した文字コードが使われていましたが、UNIXというOSではEUCコード使われており、番号体系が異なっていました。

なので、番号が一致しない文字があり、何を表示して良いか分からなくて化けてしまう、という結果になっていました。
これが文字化けです。

UTF-8とは?

世界中の文字を1つの対比表で表現しよう、ということでUnicodeが生まれました。
マルチバイト文字は日本語だけではありません。
世界中の全てのマルチバイト文字をUnicodeにまとめてしまおう、ということになったのです。

UTF-8とは、Unicodeの符号化方式の1つです。
そのほかにUTF-16、UTF-32などがあります。
簡単にいうと、バイト数の使い方に違いがあります。
UTF-8では、英数字には1バイトを使います。ASCIIコードと同じです。つまり、ASCIIコードだけのテキストはUTF-8でもそのまま解釈できるのです。
UTF-16の場合、英数字にも2バイト使う、などの違いがあります。UTF-8の方が互換性が高いと言えます。

まとめ

全ての機器、ソフトウェアでUTF-8が使われていけば、互換性も高く、文字コードがマッチングしないということもなくなり文字化けもなくなります。世界的にUTF-8を標準で使うことが多くなっています。

これらのことより、HTMLのhead要素の中にmetaタグのcharset属性を使って指定する文字コードには、UTF-8を使用するのです。