Unicodeの仕様は、Unicode Consortiumによって作られています。最新仕様はVersion 4.0です。
ややこしいことに、Unicodeは、ISO/IEC 10646の一部(UCS-2,UCS-4)としても標準化されています。
更に、日本では、ISO/IEC 10646-1がJIS X 0221 国際符号化文字集合としてJIS規格化されています。
エンコード | 説明 |
---|---|
UTF-7 | 7ビットコードを組み合わせて文字を指定する方式。 電子メールなどの7ビット文字しか利用できない場合を想定してつくられている。 |
UTF-8 | ASCII文字と互換性を持たせるためにASCIIと同じ部分は8ビット、 その他の部分を16〜32ビットで指定するコード。 |
UTF-16 | BMP面を16ビット、その他をサロゲートペアという仕組みを使い32ビットで指定する文字コード。 OSなどの内部コードはこの形式が使われる。UCS-2ともBMP面の範囲で互換性がある。 エンディアンの順序によってUTF-16LE/UTF-16BEと区別したエンコードもある。 |
UTF-32 | Unicodeの全コードを単一長のコードとして32ビットで指定するコード。 実際に使われるのは21ビット。Unicodeの範囲内ではUCS-4と互換性がある。 |
エンコード | 説明 |
---|---|
UCS-2 | Unicode とおなじBMP(基本多言語面)のみを使う場合の16ビットコード。 UTF-16のようにBMP以外の文字を使うことはできない。 |
UCS-4 | 31ビットを使うコード。 UTF-32と似ているが、Unicode以外のコードも定義されれば使用できるという点が異なる。 |
UTF-8 | UnicodeのUTF-8とほぼ同じ。 31ビットに対応するため6バイト長まで拡張されている。 |
Tclエンコーディング名 | 実際のエンコーディング名 |
---|---|
unicode | UCS-2 |
utf-8 | UTF-8 |
Tclは、UTF-16(UTF-16LE,UTF-16BE)とUCS-4(UTF-32)には対応していません。
ただし、Tcl8.4.4からビルドオプションでUCS-4をサポートしています。
すべてのエンコーディングに完全対応するのは、Tcl9.0あたりからと噂されています。
世の中的にUCS-4は時期尚早?って感じですが、UTF-16は早期にサポートして欲しいですね。