ISO/IEC 10646
ISO/IEC 10646 (UCS; Universal Coded Character Set) は、符号化文字集合や文字符号化方式などを定めた、文字コードの国際標準のひとつで、業界規格のUnicodeと概ね互換であることが特徴である。日本の対応規格はJIS X 0221(国際符号化文字集合)。
UCSの文字空間は0 - 10FFFFである。古い規格では21ビットのUnicodeをベースにして文字空間を31ビットに拡張したものとされ、Unicodeの最大値であるU+10FFFFより大きなコードも使用できるという点でUnicodeに対して上位互換であったが、2006年の改訂によりUnicodeで使用できない領域には文字が「永久に定義されない」こととされ下位互換を持つことになった。2011年の改訂では明確に0 - 10FFFFと定義された。
符号化方式は、Unicodeと同じUTF-8やUTF-16が使われることが多い。ただし、Unicodeの『UTF』が『Unicode Transformation Format』を意味するのに対して、ISO/IEC 10646の『UTF』は『UCS Transformation Format』を意味する点が違う。
面 (plane)、区 (row)、点 (cell) として分けられ、Unicodeと同じ第0面の基本多言語面 (BMP; Basic Multilingual Plane) と追加面の第1面~第16面までの範囲で文字が定義されている。古い規格では群 (group) という分類もあったが2011年の改訂で廃止された。 テンプレート:Table Unicode
制定の経緯とその影響
この規格は制定の一歩手前の段階までは、現在の姿とはかなり異なる仕様だった。4オクテットの符号であり、各オクテットをそれぞれ群、面、区、点とする。各面には従来のコントロール領域を避けた0x20〜0x7Fと0xA0〜0xFFの範囲に文字を割り当てる。その範囲にISO/IEC 2022に従った構造の各国コード(ISO/IEC 8859やJIS X 0208、GB 2312など)を平行移動してそっくり収容するという、従来のコード系との互換性を最大限に尊重した構成をとっていた。
この案は1990年に国際標準の一歩前の段階のDIS (Draft International Standard) として作成されたが、1991年6月の投票で否決された。その理由は、同じ時期にアメリカの企業群がUnicode仕様を作成したため、同じ目的の規格が2つ作られることを避けることだった。
その後、DIS 10646とUnicodeとを一本化する作業が行われた。既存規格との整合性を重んじたDIS 10646に対して、Unicodeは各種アルファベット類は新規割り当て、漢字は日中韓を統合、符号位置はコントロール領域まで全て使って2オクテット固定という、全く異なる方針で設計されていた。結果として、「群・面・区・点」という用語は残しながら、第0群第0面を基本多言語面 (BMP) と称し、BMPにUnicodeをそっくり入れてその他の群・面は未使用という、実質2オクテットの符号となった。
結局、Unicodeに乗っ取られ第1版とは似ても似つかぬ符号になったDIS 10646第2版が、そのままInternational Standardとして制定されることとなった。1993年のことである。
このような経緯をたどり、既存規格との対応が不明確な定義になってしまったため、既存規格とのコード変換において、似たような形の多い記号のどれに対応させるのかの判断が困難となる問題が生じた。これにより、製品によってコード変換が異なる問題が常態化し、この問題に起因する文字化けは今に至るまで解決の目処が経っていない。ただし漢字については、元になった各国規格の符号位置が明示されているため変換の違いは生じていない。
制定された規格群
※ 1999年9月以降、2000年9月までに成立したAmendmentおよびTechnical Corrigendumは、発行されずそのままISO/IEC 10646-1:2000に組み込まれた。
発行日 | 規格番号 | 名称 |
---|---|---|
1993/05/01 | ISO/IEC 10646-1: 1993 | Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and basic Multilingual Plane |
1996/03/01 | ISO/IEC 10646-1: 1993/Cor.1 | TECHNICAL CORRIGENDUM 1 to ISO/IEC 10646-1:1993 |
1996/10/15 | ISO/IEC 10646-1:1993/Amd.1 | Transformation Format for 16 planes of group 00 (UTF-16) |
1996/10/15 | ISO/IEC 10646-1:1993/Amd.2 | UCS Transformation Format 8 (UTF-8) |
1996/10/15 | ISO/IEC 10646-1:1993/Amd.3 | Code positions for control characters |
1996/10/15 | ISO/IEC 10646-1:1993/Amd.4 | Removal of annex G (UTF-1) |
1997/11/15 | ISO/IEC 10646-1:1993/Amd.6 | Tibetan |
1997/11/15 | ISO/IEC 10646-1:1993/Amd.7 | 33 additional characters |
1997/12/15 | ISO/IEC 10646-1:1993/Amd.8 | New annex on CJK Ideographs to ISO/IEC 10646-1:1993 |
1997/12/15 | ISO/IEC 10646-1:1993/Amd.9 | Identifiers for Characters |
1998/05/15 | ISO/IEC 10646-1:1993/Amd.5 | Hangul syllables |
1998/07/15 | ISO/IEC 10646-1:1993/Cor.2 | TECHNICAL CORRIGENDUM 2 to ISO/IEC 10646-1:1993 |
1998/07/15 | ISO/IEC 10646-1:1993/Amd.11 | Unified Canadian Aboriginal Syllabics |
1998/09/01 | ISO/IEC 10646-1:1993/Amd.12 | Cherokee |
1998/10/01 | ISO/IEC 10646-1:1993/Amd.10 | Ethiopic script |
1998/10/15 | ISO/IEC 10646-1:1993/Amd.13 | CJK unified ideographs |
1998/11/01 | ISO/IEC 10646-1:1993/Amd.16 | Braille Patterns |
1998/11/01 | ISO/IEC 10646-1:1993/Amd.19 | Runic |
1998/11/01 | ISO/IEC 10646-1:1993/Amd.20 | Ogham |
1999/05/15 | ISO/IEC 10646-1:1993/Amd.23 | Bopomofo and various other characters |
1999/06/01 | ISO/IEC 10646-1:1993/Amd.21 | Sinhala |
1999/07/15 | ISO/IEC 10646-1:1993/Amd.17 | CJK Unified Ideograph Extension |
1999/07/15 | ISO/IEC 10646-1:1993/Amd.18 | Symbols and Others |
1999 | ISO/IEC 10646-1:1993/Cor.3 | TECHNICAL CORRIGENDUM 3 to ISO/IEC 10646-1:1993 |
1999 | ISO/IEC 10646-1:1993/Amd.14 | Yi syllables and Yi radicals |
1999 | ISO/IEC 10646-1:1993/Amd.22 | Keyboard symbols |
1999 | ISO/IEC 10646-1:1993/Amd.24 | Thaana Script |
1999 | ISO/IEC 10646-1:1993/Amd.25 | Khmer Script |
1999 | ISO/IEC 10646-1:1993/Amd.26 | Burmese Script |
1999 | ISO/IEC 10646-1:1993/Amd.27 | Syriac Script |
1999 | ISO/IEC 10646-1:1993/Amd.29 | Mongolian |
1999 | ISO/IEC 10646-1:1993/Amd.30 | Additional Latin and other characters |
2000 | ISO/IEC 10646-1:1993/Amd.15 | Radicals and Numerals |
2000 | ISO/IEC 10646-1:1993/Amd.28 | Ideographic Description Sequences |
2000 | ISO/IEC 10646-1:1993/Amd.31 | Tibetan Extension |
2000/09/15 | ISO/IEC 10646-1:2000 | UCS -- Part 1: Architecture and basic Multilingual Plane |
2001/11/01 | ISO/IEC 10646-2:2001 | UCS -- Part 2: Supplementary Planes |
2002/07/16 | ISO/IEC 10646-1:2000/Amd.1 | Mathematical symbols and other characters |
2003/12/15 | ISO/IEC 10646:2003 | Universal Multiple-Octet Coded Character Set (UCS) |
2005/11/15 | ISO/IEC 10646:2003/Amd.1 | Glagolitic, Coptic, Georgian and other characters |
2006/07/01 | ISO/IEC 10646:2003/Amd.2 | N'Ko, Phags-pa, Phoenician and other characters |
2008/02/15 | ISO/IEC 10646:2003/Amd.3 | Lepcha, Ol Chiki, Saurashtra, Vai and other characters |
2008/07/01 | ISO/IEC 10646:2003/Amd.4 | Cham, Game Tiles, and other characters |
2008/12/01 | ISO/IEC 10646:2003/Amd.5 | Tai Tham, Tai Viet, Avestan, Egyptian Hieroglyphs, CJK Unified Ideographs Extension C, and other characters |
2009/10/15 | ISO/IEC 10646:2003/Amd.6 | Bamum, Javanese, Lisu, Meetei Mayek, Samaritan, and other characters |
2010/7/15 | ISO/IEC 10646:2003/Amd.7 | Mandaic, Batak, Brahmi, and other characters |
2011/5/2 | ISO/IEC 10646:2011 | Universal Coded Character Set (UCS) |
2012/05/21 | ISO/IEC 10646:2012 | Information technology -- Universal Coded Character Set (UCS) |
2013/04/09 | ISO/IEC 10646:2012/Amd 1:2013 | Linear A, Palmyrene, Manichaean, Khojki, Khudawadi, Bassa Vah, Duployan, and other characters |
文字集合のサブセット
- UCS-2
- 2オクテット固定のUCS (Universal Coded-Character Set) である。UnicodeとおなじBMP(基本多言語面)のみを使う。Unicodeの符号化方式であるUTF-16とは異なり、BMP以外の文字を使うことはできない。2011年の改訂ではdeprecated(廃止予定)とされた。
- UCS-4
- 4オクテットを基本とするUCS。文字を取り扱う範囲は10FFFFまでである。
文字符号化方式
- UTF-1
- 初期に提案されていた、8ビットコードによる方式。ほとんど利用されることなくUTF-8にとって代わられた。
- UTF-8 (UCS Transformation Format 8)
- UnicodeのUTF-8とほぼ同じ。最大4オクテット。
- UTF-16 (UCS Transformation Format 16)
- UnicodeのUTF-16とほぼ同じ。最大4オクテット。
- UTF-32
- UnicodeのUTF-32とほぼ同じ。
実装レベル
古い規格では実装レベルというものが考えられていたが2011年の改訂で廃止され、Level3の実装のみを扱う事となった。
- Level 1
- 合成文字などを扱わない
- Level 2
- 必要な合成文字を扱える
- Level 3
- 全て扱える
Unicodeは、Level 3の実装である。
参考文献
- ISO/IEC 10646:2003 Information technology -- Universal Multiple-Octet Coded Character Set (UCS)
- ISO/IEC 10646:2003/Amd 1:2005 Glagolitic, Coptic, Georgian and other characters
- ISO/IEC 10646:2003/Amd 2:2006 N'Ko, Phags-pa, Phoenician and other characters
- ISO/IEC 10646:2011(E) Universal Coded Character Set (UCS)