[13] UCS-4 は、 ISO/IEC 10646 符号化文字集合の正規の表現方法でした。
[14] 4オクテット = 32ビット (ただしその内1ビットは未使用) で1つの符号位置を表す固定長の文字コードでした。
本項は歴史的事項を説明しています。本項の内容の一部または全部は、現在の状況とは異なるかもしれません。
(なお本項の内容の一部または全部は、互換性または歴史的連続性のために現在も有効な場合もあります。しかし新たに利用することは避けるべきです。)
[1] UCS-4 は UCS の群・面・区・点各オクテットをそのまま並べた符号化方式。
[2] 正式には4オクテット正規形 (4 octet canonical form) という。
[15] 初期 ISO/IEC 10646 には符号位置の表現の方法として、正規の UCS-4 と基本多言語面のみ2バイトに短縮した UCS-2 の2種類がありました。
[16] 当時は UCS-2 と Unicode が事実上同じものとされていました。 UCS-4 は ISO/IEC 10646 だけの独自仕様でした。
[17] その後 Unicode 側で UCS-2 が拡張されて UTF-16 となり、 UCS-4 を UTF-16 に合わせて縮小したものが UTF-32 となりました。 更にその後、 ISO/IEC 10646 に UTF-16 と UTF-32 が取り込まれ、 UCS-2 と UCS-4 は消失しました。
[4] 10646 が Unicode に乗っ取られた時に、ただ2つだけ残ったのが文字を4オクテットで表すという考え方 (すなわち UCS-4) と、「BMP」という名前であると言われています。
[18] 前者もついに失われたのです。
[6] >>5 UCS-4 は学習用の形式かよ。ひどい扱いだな。
[5] JIS X 0221‐1:2001 5. より UCS-4 関係を抜粋:
この符号化文字集合の正規形式 (規格を理解するための形式) は、128個の3次元の群からなる一つの4次元符号化空間とみなすことができる。
それぞれの群は、256個の2次元の面からなる。 各面は、256個の1次元の区からなり、 各区は256個の点からなる。この符号化空間の一つの点に一つの文字を割り当て、 符号化するか、又は点を未使用と宣言している。
正規形式では、4オクテットで各文字を表現し、 これらのオクテットは、それぞれ群、面、区及び点を指定する。 2オクテットでは世界中のすべての文字を収容できないこと及び32ビット表現が現在の処理系の体系になじむことから、 正規形式の4オクテット構成を採用した。
4オクテット正規形式は、4オクテットの符号化文字集合として使用でき、 この場合に、 UCS-4 と呼ぶ。
[7] 6.2 文字の符号化
より抜粋:
この符号化文字集合の正規形式では、符号化文字集合全体の中の各文字は、 4オクテットの列で表現する。この列の最上位オクテットは、 群オクテットとする。この列の最下位オクテットは、 点オクテットとする。したがって、この列は、 次のとおり表現できる。
最上位オクテット 最下位オクテット 群オクテット | 面オクテット | 区オクテット | 点オクテット
[8] 6.3 オクテットの順序
より:
文字を表現するオクテットの列及びその列の最上位端・最下位端は、 6.2 に示すとおりでなければならない。 オクテット列として直列化するときは、 上位のオクテットが下位のオクテットより先になければならない。 直列化しないときは、オクテットの順序は、 送受間の合意によって定めてよい [16.1 及び附属書 H (参考) 参照]。
4 オクテット正規形式に適合した CCデータ要素中では、 すべての文字は、 6.2 の規定に従って、 群オクテット、面オクテット、区オクテット及び点オクテットからなる 4オクテットで表現しなければならない。
備考 4オクテット正規形式を使った符号化図形文字は、処理用として32ビットの整数型で実装してもよい。 (JIS X 0221‐1:2001 13.1)
ISO-10646-UCS-4
#✎[10647] IANA charset ISO-10646-UCS-4
は、 UCS-4 を表す名前です。
[10648] この名前は XML の符号化名としても XML 仕様書で特に言及されています。
[11] UCS-4 は32ビット = 8バイトの文字コードであり、 大エンディアン (UCS-4BE) と小エンディアン (UCS-4LE) があります。またその他の変則的なエンディアンも存在するようです。
[19] 変則的エンディアンを表す名称として次のものが使われています。
X-ISO-10646-UCS-4-2143
X-ISO-10646-UCS-4-2413
X-ISO-10646-UCS-4-3412
[21] 第1バイトから第4バイトまでの配置順が名前に入っています。
[20] こうしたものは変換ソフトウェアなどに実装されていることがありますが、 実用されたことがあるのかは不明です。
[23] まで Gecko が 2143 と 3412 の復号に対応していました。 UTF-32 諸共削除されました。 >>22
[24]
削除前は Gecko に組み込まれた文字コード自動判定用ライブラリー
UniversalCharDet
でも実装されていました。
これを経由し、
各種プログラミング言語に移植された文字コード自動判定ライブラリー
(X-ISO-10646-UCS-4-3412
,
X-ISO-10646-UCS-4-2143
を実装していることがあります。
[3] UTF-32 と実質的に同じですが、 UTF-32 は U+10FFFF までのみで、 U-00110000 以上は表現できません。 UCS-4 は U-7FFFFFFF まですべての符号位置を表現できます。
[10] ISO/IEC 10646 が当初規定していた本来の UTF-8 は、 UCS-4 と同じ範囲のすべての符号位置を表現できました。 現在の UTF-8 は UTF-32 と同じ範囲に限定されています。