文字→バイト列の変換図
unicode
「符号化文字集合」とい呼ばれるも、文字に対して数字が割り振られたものです。
下記がunicode変換表。
ここで割り振られたコードポイントを、コンピュータが理解できる数字に変換する符号化方式がunicodeに用意されています。代表的なのが、utf-8
、utf-16
、utf-32
です。
コードポイント
文字に対応する数字を16進数で表したもの。
utf-8
Unicodeの符号化方式。文字にunicodeで紐付けられたコードポイントと呼ばれる数字を、8ビット方式の数字のバイト列にエンコード(変換)する際のルールです。
以下のような特徴があります。
- UTF-8はほぼ全ての国の文字に対応しているため文字化けがおきずらい
- 日本語の場合は3バイト以上使うため、Shift_JIS、EUC-JPなどと容量を比較すると1.5倍程度に容量が大きくなる
バイト列
8桁の0か1の整数。
一桁を1ビットと呼び、この1ビットには0か1の2進数しか入りません。つまり1ビットなら2通り、8ビットなら0から255までの256通りの数字を表現できます。
「変換されるイメージがわかない・・」という方は、下記ツールで2進数、10進数、16進数、の切り替えができます。
文字コードが違うことで文字化けが起きる理由
設定された文字コードが違うことで、文字が割り当てられていない数値が渡されたり、意図しない文字として認識されることが原因です。
つまり、「HTMLファイル自体の文字コードと、ブラウザが解釈した文字コードが異なるとき」に文字化けが起きます。例えば、Shift_JISで保存されたHTMLファイルをブラウザがUTF-8だと認識し、UTF-8で表示し用途した時に、文字化けが発生します。