ISO/IEC 10646

読み:アイエスオウ・アイイースィー・いちゼロろくよんろく
外語:ISO/IEC 10646
品詞:固有名詞,+規格

世界中の文字を32ビット長(実データ長は31ビット)の符号空間で表現するための国際規格。

正式には、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と、関連する事項について時系列で並べる。

  • 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
  • 1993(平成5)年5月1日: ISO/IEC 10646-1制定 (ISO/IEC 10646-1:1993)
  • 1996(平成8)年7月: Unicode 2.0
  • 1998(平成10)年1月: UTF-8の初案RFC、RFC 2279発行
  • 1998(平成10)年: Unicode 2.1
  • 1993(平成5)年10月15日: ISO/IEC 10646-1 Amendment 1制定
  • 1993(平成5)年10月15日: ISO/IEC 10646-1 Amendment 2制定
  • 1998(平成10)年5月15日: ISO/IEC 10646-1 Amendment 5制定
  • 1999(平成11)年7月15日: ISO/IEC 10646-1 Amendment 17制定
  • 1999(平成11)年9月: Unicode 3.0
  • 2000(平成12)年2月23日: UTF-16のRFC、RFC 2782発行
  • 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
  • 2003(平成15)年4月17日: Unicode 4.0.0
  • 2003(平成15)年11月: UTF-8の標準化RFC、RFC 3629発行
  • 2003(平成15)年12月15日: ISO/IEC 10646-1と2改正、統合によりISO/IEC 10646に改名 (ISO/IEC 10646:2003)
  • 2004(平成16)年3月30日: Unicode 4.0.1
  • 2005(平成17)年3月30日: Unicode 4.1.0
  • 2006(平成18)年7月14日: Unicode 5.0.0

誕生までの経緯

前夜

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とUnicodeの関係

基本的なISO/IEC 10646とUnicodeの関係は、前者が後者を含むということである。

但しISO仕様はUnicodeの仕様を完全に含むわけではなく、例えばユーザ定義サロゲート(Plane 15,16)、つまり外字領域はISOでは認めない方針である。

現時点において、Unicode領域外については文字の割り当ては存在しないが、理論上は番号が衝突しない領域を別に定義することも可能である。

サブセット集合

ISO/IEC 10646には、二つの文字集合(CCS)が存在する。

これはISO/IEC 10646名で、Unicodeに配慮したことから作られたと考えられるが、そのUnicodeでは既に使用していない用語でもある。同等の符号化方法(CES)はそれぞれ、UTF-16UTF-32であるが、同一ではない。

符号化方法

ISO/IEC 10646とUnicodeは、同じ符号化方式が利用出来る。

ISO/IEC 10646の全領域を網羅できるのはうち、UTF-8とUTF-32である。

RFCにおいては、当初のRFC 2279外部リンクと、それを破棄し標準となったRFC 3629外部リンクがあるが、前者が全領域網羅なのに対し、標準の後者はUTF-16の範囲内(Unicode範囲内)しか対応していない。