文字集合(CCS)の一つ。国際標準として作られている。
元々は、16ビット、そして後に21ビットのUnicodeに対し、32ビット(有効31ビット)の文字空間を持つのが特徴となっていた。
Unicodeでは表現できない文字空間を表わすことができるという点でUnicodeの上位互換であったが、ISO/IEC 10646:2003/Amd.2:2006でUnicode外の領域は「永久に予約」(permanently reserved)と宣言されたことにより、使用できなくなった。
このため現在では、公開日のずれこそあるが、両者は文字集合としては同一となっている。
正式には、Information technology - Universal Multiple-Octet Coded Character Set (UCS) (国際符号化文字集合(UCS))という。
最初に作られた16ビット範囲に収められるPart1(ISO/IEC 10646-1)と、それを超える範囲を規定するPart2(ISO/IEC 10646-2)があったが、後に両者は統合され(2003(平成15)年)、現在のISO/IEC 10646となった。
この国際標準の、各国の規格名は次のようになっている。
ISO/IEC 10646と、関連する事項について時系列で並べる。
なお、「ISO/IEC 10646-1:1993」のAmd(AMENDMENT=追補)は31まで確認されているが、全部は発行されていない。該当する※を附したものは「ISO/IEC 10646-1:2000」へと組み込まれている。
Unicode 1.x時代
- 1991(平成3)年6月: DIS 10646が国際投票で否決される
- 1991(平成3)年10月: Unicode 1.0 Vol.1
- 1992(平成4)年1月: DIS 10646第二版が国際投票で可決される
- 1992(平成4)年6月: Unicode 1.0 Vol.2
- 1993(平成5)年: Unicode 1.1
ISO/IEC 10646-1:1993時代
- 1993(平成5)年5月1日: ISO/IEC 10646-1制定 (ISO/IEC 10646-1:1993)
- 1996(平成8)年7月: Unicode 2.0
- 1996(平成8)年10月15日: ISO/IEC 10646-1:1993/Amd.1:1996 (Transformation Format for 16 planes of group 00 (UTF-16))
- 1996(平成8)年10月15日: ISO/IEC 10646-1:1993/Amd.2:1996 (UCS Transformation Format 8 (UTF-8))
- 1996(平成8)年10月15日: ISO/IEC 10646-1:1993/Amd.3:1996 (Code positions for control characters)
- 1996(平成8)年10月15日: ISO/IEC 10646-1:1993/Amd.4:1996 (Removal of annex G (UTF-1))
- 1997(平成9)年11月15日: ISO/IEC 10646-1:1993/Amd.6:1997 (Tibetan)
- 1997(平成9)年11月15日: ISO/IEC 10646-1:1993/Amd.7:1997 (33 additional characters)
- 1997(平成9)年12月15日: ISO/IEC 10646-1:1993/Amd.8:1997 (New annex on CJK Ideographs)
- 1997(平成9)年12月15日: ISO/IEC 10646-1:1993/Amd.9:1997 (Identifiers for characters)
- 1998(平成10)年1月: UTF-8の初案RFC、RFC 2279発行
- 1998(平成10)年2月18日: Unicode 2.1
- 1998(平成10)年5月15日: ISO/IEC 10646-1:1993/Amd.5:1998 (Hangul syllables)
- 1998(平成10)年7月15日: ISO/IEC 10646-1:1993/Cor.2:1998
- 1998(平成10)年7月15日: ISO/IEC 10646-1:1993/Amd.11:1998 (Unified Canadian Aboriginal Syllabics)
- 1998(平成10)年9月1日: ISO/IEC 10646-1:1993/Amd.12:1998 (Cherokee)
- 1998(平成10)年10月1日: ISO/IEC 10646-1:1993/Amd.10:1998 (Ethiopic script)
- 1998(平成10)年10月15日: ISO/IEC 10646-1:1993/Amd.13:1998 (CJK unified ideographs with supplementary sources)
- 1998(平成10)年11月1日: ISO/IEC 10646-1:1993/Amd.16:1998 (Braille patterns)
- 1998(平成10)年11月1日: ISO/IEC 10646-1:1993/Amd.19:1998 (Runic)
- 1998(平成10)年11月1日: ISO/IEC 10646-1:1993/Amd.20:1998 (Ogham)
- 1999(平成11)年5月15日: ISO/IEC 10646-1:1993/Amd.23:1998 (Bopomofo and various other characters)
- 1999(平成11)年6月1日: ISO/IEC 10646-1:1993/Amd.21:1998 (Sinhala)
- 1999(平成11)年7月15日: ISO/IEC 10646-1:1993/Amd.17:1999 (CJK Unified Ideograph Extension)
- 1999(平成11)年7月15日: ISO/IEC 10646-1:1993/Amd.18:1999 (Symbols and Others)
- 1999(平成11)年9月21日: ※ISO/IEC 10646-1:1993/Cor.3:1999 (Architecture and Basic Multilingual Plane)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.14:1999 (Yi syllables and Yi radicals)
- 1999(平成11)年9月21日: ※ISO/IEC 10646-1:1993/Amd.15:1999 (Kang Xi radicals and CJK radicals supplement)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.22:1999 (Keyboard symbols)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.24:1999 (Thaana)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.25:1999 (Khmer)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.26:1999 (Myanmar)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.27:1999 (Syriac)
- 1999(平成11)年9月24日: ISO/IEC 10646-1:1993/Amd.28:1999 (Ideographic description characters)
- 1999(平成11)年: ※ISO/IEC 10646-1:1993/Amd.29:1999 (Mongolian)
- 1999(平成11)年4月6日: ※ISO/IEC 10646-1:1993/Amd.30:1999 (Additional Latin and other characters)
- 1999(平成11)年4月6日: ※ISO/IEC 10646-1:1993/Amd.31:1999 (Tibetan extension)
- 1999(平成11)年9月11日: Unicode 3.0
- 2000(平成12)年2月23日: UTF-16のRFC、RFC 2782発行
ISO/IEC 10646-1:2000時代
- 2000(平成12)年9月15日: ISO/IEC 10646-1改正 (ISO/IEC 10646-1:2000)
- 2001(平成13)年3月: Unicode 3.1
- 2001(平成13)年11月1日: ISO/IEC 10646-2制定 (ISO/IEC 10646-2:2001)
- 2002(平成14)年3月25日: Unicode 3.2.0
- 2002(平成14)年7月16日: ISO/IEC 10646-1:2000/Amd.1:2002 (Mathematical symbols and other characters)
- 2003(平成15)年4月17日: Unicode 4.0.0
- 2003(平成15)年11月: UTF-8の標準化RFC、RFC 3629発行
ISO/IEC 10646:2003時代
規格が融合されたISO/IEC 10646:2003を「1st Edition」という。
ISO/IEC 10646:2011時代
ISO/IEC 10646-1:2011を規格融合後の「2nd Edition」という。
ISO/IEC 10646:2012時代
ISO/IEC 10646-1:2012を規格融合後の「3rd Edition」という。
ISO/IEC 10646:2014時代
ISO/IEC 10646:2014を規格融合後の「4th Edition」という。
今後の予定
- ?: ISO/IEC 10646:2014/Amd.1
- ?: ISO/IEC 10646:2014/Amd.2
前夜
1991(平成3)年に投票されたDIS 10646は、否決された。これは、同年に登場したUnicode 1.0の影響であり、似たような規格が乱立することを避けるためだった。
DIS 10646というのは、元々のISO/IEC 10646の思想に基づくものともいえる。
DIS 10646は4オクテットの符号系で、8ビットごとの上位から群、面、区、点と区切ったものである。各国の現役のコードは、そのまま(統合などせずに)収容され、従来のものとの互換性を最大限に配慮(?)しているのが特徴だった。
これは、現在のTRONコードと殆ど同じ思想である。
その一方、UnicodeはASCIIおよびISO/IEC 8859の拡張という形を取った2オクテット固定長の符号系である。ASCIIとISO/IEC 8859-1はそのまま、それ以降は全て新規割り当てで、漢字文字は(2オクテットに収めるために)統合する、というものであった。
両者は、根本から全く思想の異なるものだったのである。しかしDIS 10646はUnicodeより出遅れたため、完敗を喫することになった。
DIS 10646第二版
こうしてUnicode 1.0の後に登場したDIS 10646第二版は、群、面、区、点という概念自体はそのままだが、その内容は0群0面にUnicodeをそのまま飲み込みこれを基本多言語面(BMP)とする、他の群、面は未使用で予約、という、ものであった。
第二版と名は付いていたが、実質これはUnicode 1.0そのままであった。
こうして、第二版は無事に国際投票で可決され、ISO/IEC 10646-1となったのである。
元々の設計では、32ビットのうち、上位の8ビットが群(group)、次の8ビットが面(plane)、次の8ビットが区(row)、下位の8ビットが点(cell)と表わされ、この8ビットずつのかたまりをオクテット(octet)と呼んだ。但し、実際には32ビット中の31ビットのみを利用し、最上位の1ビットは利用しない。つまり群のみ7ビットで表現された。
- 群(group、8ビット、うち最上位1ビットは未使用)
- 面(plane、8ビット)
- 区(row、8ビット)
- 点(cell、8ビット)
群・面は直訳だが、区・点という訳語は直訳ではない。これは、従来のJIS X 0208などと用語を合わせた結果であると考えられる。
しかし群の利用実績がないこともあり、ISO/IEC 10646:2011(Unicode 6.0.0)からは群が仕様から廃止された。
- 面(plane、16ビット、値は0から16まで)
- 区(row、8ビット)
- 点(cell、8ビット)
このように、ISO/IEC 10646:2011(Unicode 6.0)以降はビット数とは無関係に、面は0から16までの全17面とされた。UTF-16で表現できる全範囲である。
群は既に廃止されているが、後述の説明のために併記する。
- 00群00面 (0x0000nnnn) BMP 基本多言語面
- 00群01面 (0x0001nnnn) SMP 補助多言語面
- 00群02面 (0x0002nnnn) SIP 補助漢字面
- 00群03面 (0x0003nnnn) TIP
- 00群04面〜13面 (0x00040000〜0x000DFFFF): 予約
- 00群14面 (0x000Ennnn) SSP 補助特殊用途面 (タグや異体字セレクター)
- 00群15面 (0x000Fnnnn) プライベートエリア(外字領域)
- 00群16面 (0x0010nnnn) プライベートエリア(外字領域)
これ以降は、初期のISO/IEC 10646で使用されていたが、現在のISO/IEC 10646では使用しないことになった。
- 00群17面〜223面 (0x00110000〜0x00DFFFFF): 未定義
- 00群224面〜255面 (0x00E00000〜0x00FFFFFF): プライベートエリア(外字領域)
- 01群〜95群 (0x01000000〜0x5FFFFFFF): 未定義
- 96群〜127群 (0x60000000〜0x7FFFFFFF): プライベートエリア(外字領域)
3種類の実装水準が規定されていた。
- Level 1(実装水準1) ‐ 結合文字を処理しない
- Level 2(実装水準2) ‐ 必要最小限の結合文字を処理する
- Level 3(実装水準3) ‐ 全てを扱う
いわゆるUnicodeは、このうちLevel 3(実装水準3)に準じて実装されている。
現在のISO/IEC 10646では使用されておらず、Level 3相当での実装が要求されている。
ISO/IEC 10646とUnicodeの関係は、元々は、前者が後者を含むということだった。
しかし現実に、Unicode領域外については文字の割り当ては存在せず、また今後も、そのような動きが生じる可能性は皆無だったことから仕様が改められ、現在のISO/IEC 10646はUnicodeとほぼ等価の仕様となっている。
但し、Unicodeはあくまでも閉じた団体であり参画企業が好き放題できるのに対して、ISO/IEC 10646は国際標準であり、その議論に参加することは理論上誰でも可能である。ISO/IEC 10646で認められないものをUnicodeが採用することはない。
ISO/IEC 10646とUnicodeは、同じ符号化方式が利用出来る。
- 8ビット(1オクテット)系
- 16ビット(2オクテット)系
- 32ビット(4オクテット)系
ISO/IEC 10646の全領域を網羅できるのはこのうち、UTF-8と32ビット(4オクテット)系の符号である。
UCS-2/UCS-4は、初期のISO/IEC 10646用語で、Unicodeに配慮したことから作られたものだが、Unicodeでは既に使用されていない。
UTF-8は、RFCにおいては、当初のRFC 2279と、それを破棄し標準となったRFC 3629があるが、前者が全領域網羅なのに対し、標準の後者はUTF-16の範囲内(Unicode範囲内)しか対応していない。
用語の所属
文字コード
関連する用語
ISO/IEC 10646-1
ISO/IEC 10646-2
Unicode
UCS-2
UCS-4
UTF-8
UTF-16