かつてコンピュータで用いられる文字コードは、メーカー同士だけでなく、コンピュータごとに異なっていました。IBM内部でさえ9種類の方言があったそうです。そのため、1963年、アメリカでASCII(American Standard Code for Infomation Interchange、米国標準文字コード表)が制定され、1967年、ISO(International Organization for Standardization、国際標準化機構)がASCIIをほぼそのまま取り込んでISO 646を制定しました。このISO 646を元に、各国で独自の文字コードが制定され、それを取り込む形でISO 2022が誕生しました。日本語の電子メールでは、このISO 2022をベースにしたISO 2022-JP(「ISO」が頭に付いていますが、ISOが制定したものではありません)が一般的に用いられています。

その後、各国の文字を統一したコード表が数多く登場しますが、それらについてはここでは割愛します。Unicodeはそうしたコード表の一つとして誕生しました。このUnicodeを取り込む形で制定されたのがISO 10646です。ISO 10646はUCS(Universal Coded-Character Set、万国符号化文字集合)とも呼ばれます。

Unicodeはもともと内部コードとして構想されていたものです。そのため、インターネットを始めとするネットワークで使用する際、UTF(UCS Transformation Format、UCS変換形式)と呼ばれる変換方式によって別符号に変換しておかなければなりません。

UTFには様々な方式があります。UTF-1に始まり、UTF-7、UTF-8、UTF-16などがあります(そのすべてがネットワークで使用されるものではありません)。現在では、アメリカが押し切る形でUTF-8がUnicodeの符号化方式の本命となりました。

UTF-8は、ASCIIとの互換性を維持したまま、ASCII以外の文字を2〜6バイトの不定長符号に変換する方式です。 1〜4バイトの不定長符号に変換する方式です。
(2007.9.14 追記)1998年1月に制定された旧UTF-8(RFC2279)では1〜6バイトの不定長符号に変換する方式でしたが、2003年11月に制定された1〜4バイトの不定長符号に変換する方式の新UTF-8(RFC3629)への移行に伴い、廃止されました。

  1. 32〜127(0020-007F) 0〜127(0000-007F)のASCII(Unicodeでは基本ラテン)は1バイト(8ビット)で表す。
  2. 128〜2,047(0080-07FF)は2バイトで表す。
  3. 2,048〜65,535(0800-FFFF)は3バイトで表す。 2,048〜55,295(0800-D7FF)及び57,344〜65,535(E000-FFFF)は3バイトで表す(55,296〜57,343(D800-DFFF)はサロゲート領域のため、使用禁止)。
  4. 65,536〜1,114,111(010000-10FFFF)は4バイトで表す。

上記の通り、UTF-8では、日本語は3バイトで表されます。そのため、CGIなどでUTF-8を用いる際には注意が必要です。詳細については「文字コードに関する覚え書きと実験」の「UTF-8形式 (UTF 8-bit)」等を参考にしてください。

(注)下の表は、スタイルシートが適用されていない環境ではこちらの意図した表示になりません。

基本多言語面(BMP : Basic Multilingual Plane)
10進16進文字レパートリー
0123456789ABCDEF
000基本ラテン文字ラテン文字-1 補助
101ラテン文字拡張-Aラテン文字拡張-B
202ラテン文字拡張-BIPA 拡張スペース調整文字
303結合分音記号ギリシア文字とコプト文字
404キリル文字
505キリル文字補助アルメニア文字ヘブライ文字
606アラビア文字
707シリア文字アラビア文字補助ターナ文字マネンカ文字
808空領域
909デーヴァナーガリー文字ベンガル文字
100Aグルムキー文字グジャラート文字
110Bオリヤー文字タミル文字
120Cテルグ文字カンナダ文字
130Dマラヤーラム文字シンハラ文字
140Eタイ文字ラオ文字
150Fチベット文字
1610ミャンマー文字グルジア文字
1711ハングル字母
1812エチオピア文字
1913エチオピア文字補助チェロキー文字
20〜2114-15統合カナダ原住民音節文字
2216オガム文字ルーン文字
2317ダガログ文字ハヌノオ文字ブヒッド文字タグバンワ文字クメール文字
2418モンゴル文字空領域
2519リンブ文字タイ・レ文字新タイ・ルー文字クメール記号
261Aブギ文字空領域
271Bバリ文字空領域
281C空領域
291D発音拡張発音拡張補助結合分音記号補助
301Eラテン文字拡張追加
311Fギリシア文字拡張
3220一般句読点上付き文字と下付き文字通貨記号記号用結合分音記号
3321文字種記号数字の形矢印
3422数学記号
3523各種技術用記号
3624制御用記号光学式文字認識囲み英数字
3725罫線素片ブロック要素幾何学図形
3826各種記号
3927装飾記号各種数学記号-A補助矢印-A
4028ブライユ点字法パターン
4129補助矢印-B各種数学記号-B
422A補助数学演算記号
432B各種記号と矢印
442Cグラゴール文字ラテン文字拡張-Cコプト文字
452Dグルジア文字補助ティフナグ文字エチオピア文字拡張空領域
462E補助句読点CJK 部首補助
472F康煕部首空領域漢字構成記述文字
4830CJK 記号と句読点ひらがなカタカナ
4931注音字母ハングル互換字母漢文注音字母拡張CJK 字画カタカナ発音拡張
5032囲み CJK 文字と月
5133CJK 互換文字
52〜7634-4CCJK 統合漢字拡張 A
774D易経記号
78〜1584E-9ECJK 統合漢字
1599F空領域
160〜163A0-A3イ文字音節
164A4イ文字部首空領域
165〜166A5-A6空領域
167A7声調記号ラテン文字拡張-D
168A8シロティ・ナグリ文字空領域パスパ文字空領域ハングル音節
169〜214A9-D6
215D7空領域
216〜219D8-DB上位サロゲート領域
220〜223DC-DF下位サロゲート領域
224〜248E0-F8私用領域
249〜250F9-FACJK 互換漢字
251FBアルファベット表示形アラビア文字表示形-A
252〜253FC-FD
254FE異体字セレクタ縦書き用句読点結合半角記号CJK 互換形小字形変種アラビア文字表示形-B
255FF半角形と全角形特殊文字