文字コードを考える上で、文字セットの存在は重要です。文字がいくつあるかに因ってコードの付け方は変わってきます。文字セットとは「フォントの中に含まれる文字を明示した集まり」で、JIS X 0208,JIS X 0212,教育漢字/常用漢字などの文字の集合体の定義です(グリフセットも同じと考えます)。
一方、文字コードとは、文字や記号をコンピュータで扱うために、文字や記号一つ一つに割り当てられた固有の数値のことで、この文字コードを割り付ける事を符号化と言います。
日本語文字コードのJIS, シフトJIS コードでは、2 バイトで表現されています。
2 バイトの 0000 〜FFFF をフルに使えば、65,536 文字を符号化出来ますが、JIS コードは、Fig-1 の様に 2121 〜7E7E の範囲で、区点と同じ配列です。コンピュータの世界では、情報のやり取りの観点から、第1バイトの00 〜7E,A0 〜DF 部分が除かれた Fig-2 のシフトJIS コードが普及しました。

日本語文字コードのJIS 規格と言えば、JIS X 0208 の歴史です。Fig-3 にJIS 規格とその他の規格を年表にしました。
1978 年の「情報交換用漢字符号系JISC6226-1978」が最初で、1983 年から「JIS X 0208-xxxx」として、すこしづつ改定されました。
Fig-3:JIS X 0208, JIS X 0212,JIS X 0213 の文字数の比較

1990 年には、JIS X 0212(補助漢字)が策定されましたが、普及しませんでした。そして、2000 年には第三,第四水準の漢字を含む新たな JIS X 0213 が策定されました。JIS X 0213 は、JIS X 0208 に追加したもので、面という概念が導入され、第三水準漢字を含む文字が、JIS X 0208 の空きエリアの第1 面に、第四水準漢字は第2 面にはいりました。
Mac OS X の日本語文字パレットで、「コード表」-「X0213 面区点」で確認する事が出来ます。JIS X 0213-2000 は、JIS2000 とか新JIS と呼ばれていますが、2004 年には、表外漢字字体表に対応するための改定が行われています。また「平成16 年の人名用漢字493 文字追加(平成16 年9 月27 日に追加された人名用漢字は488 字ですが、それ以前に5 字追加されています)」に対しては、改定なしで既に含まれているとしています。今後はJIS X 0213 の改定が主流になるでしょう。


Unicode は、もともと、Apple 社、IBM 社、Microsoft 社などアメリカのコンピュータメーカが作った、Unicode コンソーシアムという協議会によって、世界中の文字を16bit に割り付けようとした業界標準規格でした。
同じころ、国際標準化機構(ISO) が、世界中の主要な文字を、一括して扱う文字セットとしてUCS(Universal multi-octet coded Character Set) を規格化、ISO/IEC 10649 として出しました。 その後、同じ様な規格があるのは、混乱を招くとして、両者が歩みより一本化されました。USC は文字コードセットで、USC-4 は、Fig-1 の様に、32bit で表現された、郡(group):面(plane):区(row):点(cell)の4 バイトからなり、00 〜7F の128 郡 × 00 〜FF の256 面 × 00 〜FF の256 区 × 00 〜FF の256 点という、膨大な量の文字を収納可能です。USC-4 のうち、下位の区・点16bit だけを使ったものをUSC-2 とし、特に00 郡,00 面のUSC-2 を、BMP 面(Basic Multilingual Plane) といいます。

BMP 面の4 つの領域は、以下のように分けられています。
A 領域:アルファべット及び音節文字の用字、種々の記号等、仮名など
I 領域:中国,日本,韓国(CJK) の統合された漢字
O 領域:将来の拡張用であったが、現在はハングル文字が収納されている。また拡張として、サロゲートペア用に使用されている。
R 領域:私用文字、表示形及び互換用文字、半角仮名など

Unicode 関連として、UTF(UCS Transformation Format) があります。 これはUCS-2 またはUCS-4 として定義された文字を、バイト列としてどのように表現するかの方式を示しています。 UFT-8,UTF-16,UTF-32 は、それぞれ1 文字を8bit,16bit,32bit で表すためのルールです。 Unicode1.0 決定後、Unicode コンソーシアムには文字追加要求があいつぎ、BMP 面だけでは文字が収まらなくなってきたので、複数の面(plane) を使用して拡張しようとしました。BMP 面の範囲外の文字を表現するときのために予約されている、O 領域のU+8000 〜DFFF の内、最初の高位1,024 個 (U+D8000 〜DBFF) と、残りの低位 1,024個 (U+DC00 〜DFFF) を使い、ペアで用いられた時のみ有効になる、サロゲートペア方式が採用されました。これによって、UTF-16 を使用しながら、2 文字分のコード表記で1 文字をポイント出来るようになり、16 の面(plane)が使用可能なりました。 なお、実際にサロゲートペア方式を採用し、BMP 面以外に文字が拡張されたのは、Unicdoe3.1 からで、CJK 統合漢字が0x02 面(plane) に追加されました。
文中では8bit を、バイトと表現していますが、正式にはオクテットです。ただ一般的にはバイトの方が馴染みやすいため、使用しています。