ISO/IEC 10646
読み:アイエスオウ-アイイースィー-いちゼロろくよんろく
外語:ISO/IEC 10646
文字集合
(
CCS
)の一つ。国際標準として作られている。
目次
概要
文字集合
国際標準
沿革
Unicode 1.x時代
ISO/IEC 10646-1:1993時代
ISO/IEC 10646-1:2000時代
ISO/IEC 10646:2003時代
ISO/IEC 10646:2011時代
ISO/IEC 10646:2012時代
ISO/IEC 10646:2014時代
誕生までの経緯
前夜
DIS 10646第二版
基本的な構造
ビットの使い方
面の構造
実装水準
特徴
ISO/IEC 10646とUnicodeの関係
符号化方法
概要
文字集合
元々は、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となった。
この国際標準の、各国の規格名は次のようになっている。
日本国
:
JIS X 0221
支那
: GB 13000
南鮮
: KS X 1005
沿革
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」という。
2003(平成15)年12月15日:
ISO/IEC 10646:2003
(ISO/IEC 10646-1と2を統合)
2004(平成16)年3月30日:
Unicode 4.0.1
2005(平成17)年3月31日:
Unicode 4.1.0
2005(平成17)年11月15日:
ISO/IEC 10646:2003/Amd.1:2005
(Unicode 4.1相当)
2006(平成18)年7月1日:
ISO/IEC 10646:2003/Amd.2:2006
(Unicode 5.0相当)
2006(平成18)年7月14日:
Unicode 5.0.0
2008(平成20)年2月15日:
ISO/IEC 10646:2003/Amd.3:2008
(Unicode 5.1相当・甲)
2008(平成20)年4月4日:
Unicode 5.1.0
2008(平成20)年7月1日:
ISO/IEC 10646:2003/Amd.4:2008
(Unicode 5.1相当・乙)
2008(平成20)年12月1日:
ISO/IEC 10646:2003/Amd.5:2008
(Unicode 5.2相当・甲)
2009(平成21)年10月13日:
ISO/IEC 10646:2003/Amd.6:2009
(Unicode 5.2相当・乙)
2009(平成21)年10月1日:
Unicode 5.2.0
2010(平成22)年7月15日:
ISO/IEC 10646:2003/Amd.7:2010
(Unicode 6.0相当・甲)
2010(平成22)年10月11日:
Unicode 6.0.0
ISO/IEC 10646:2011時代
ISO/IEC 10646-1:2011を規格融合後の「2nd Edition」という。
2011(平成23)年5月2日:
ISO/IEC 10646:2011
(Unicode 6.0相当)
ISO/IEC 10646:2012時代
ISO/IEC 10646-1:2012を規格融合後の「3rd Edition」という。
2012(平成24)年5月21日:
ISO/IEC 10646:2012
(Unicode 6.1/6.2相当)
2013(平成25)年4月9日:
ISO/IEC 10646:2012/Amd.1:2013
(Unicode 7.0相当・甲)
?:
ISO/IEC 10646:2012/Amd.2:2013
(Unicode 7.0相当・乙)
ISO/IEC 10646:2014時代
ISO/IEC 10646:2014を規格融合後の「4th Edition」という。
?:
ISO/IEC 10646:2014
今後の予定
?: 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の関係
ISO/IEC 10646とUnicodeの関係は、元々は、前者が後者を含むということだった。
しかし現実に、Unicode領域外については文字の割り当ては存在せず、また今後も、そのような動きが生じる可能性は皆無だったことから仕様が改められ、現在のISO/IEC 10646はUnicodeとほぼ等価の仕様となっている。
但し、Unicodeはあくまでも閉じた団体であり参画企業が好き放題できるのに対して、ISO/IEC 10646は国際標準であり、その議論に参加することは理論上誰でも可能である。ISO/IEC 10646で認められないものをUnicodeが採用することはない。
符号化方法
ISO/IEC 10646とUnicodeは、同じ符号化方式が利用出来る。
8ビット(1オクテット)系
UTF-8
16ビット(2オクテット)系
UCS-2
UTF-16
32ビット(4オクテット)系
UCS-4
UTF-32
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範囲内)しか対応していない。
再検索