UTF-32

UTF-32とは



UTF-32(またはUCS-4)は、Unicodeの符号化形式の一つで、各符号位置を固定長の32ビットで表現します。これは、Unicodeの各文字に一意の32ビットのコードを割り当てることを意味します。

UTF-32の特徴



固定長: UTF-32の最大の特徴は、すべての文字が32ビットで表現される固定長である点です。これにより、特定の文字にアクセスするために複数回のアクセスが必要な可変長のUTF-8やUTF-16とは異なり、1回のメモリアクセスで文字情報を取得できます。
メモリ管理: この固定長という特性から、UTF-32は主にシステムのメモリ上での管理や、符号位置数で管理するデータベースなどで利用されます。特に、メモリ上に配置する場合には固定長であるUTF-32が都合が良い場合があります。
データベース: 近年のデータベースでは、バイト数ではなく符号位置数で領域を確保する型が利用可能です。UTF-32はバイト数が固定であるため、物理サイズをディスク上に確保することが容易です。
サイズ: データサイズに関しては、他の文字符号化方式と比較して大きくなります。また、文字列の表示幅の計算は、いくつかの特殊なケースを除いて容易ではありません。これは、結合文字CJKV漢字のように、1つの文字位置が複数の符号位置で構成される場合や、1つの符号位置が複数の文字位置を占める場合があるためです。
利用頻度: これらの理由から、UTF-32はデータの交換にはほとんど使用されず、UTF-8やUTF-16がUnicode文書の通常の符号化スキームとして利用されています。
符号位置の表現: Unicodeの符号位置をテキストで表現する際には、通常、UTF-32で扱った場合の16進数表記(例:U+10001)が使用されます。
バイト順マーク: UTF-32は、テキスト形式で扱う場合には先頭にバイト順マーク (BOM) を付けます。BOMによって、リトルエンディアン(FF FE 00 00)かビッグエンディアン(00 00 FE FF)かを識別します。
プログラミング言語: プログラミング言語では、UTF-32の指定に大文字Uが使われることが多く、C言語C++などでは、文字列リテラルの前にUを置くことでUTF-32として処理されます。

歴史



初期のISO/IEC 10646|ISO_IEC 10646規格では、UCS-4という31ビットの符号化文字集合が定義されていました。UCS-4では、各文字を0から7FFFFFFFの範囲の符号位置で表現していました。最上位ビットが1になる値を避けたのは、このビットをエスケープなどの目的で利用するためでした。

しかし、UCS-4は1114112個の符号位置を持ち、Unicode符号空間の全てを表現するには十分でしたが、より効率的な符号化方式としてUTF-32が提案されました。UTF-32は、UCS-4の部分集合であり、32ビットの符号値を0から10FFFFの範囲のみで使用します。

当初、UTF-32はUCS-4規格の部分集合でしたが、後の規格では、すべての文字割り当てをBMP(基本多言語面)または最初の14の追加面に制限し、私用面の一部を削除する方針となりました。

まとめ



UTF-32は固定長の符号化形式であり、メモリ管理やデータベースでの利用に適していますが、データサイズが大きいため、データ交換にはあまり使用されません。UTF-8やUTF-16がより一般的ですが、UTF-32は内部処理や特定の用途で重要な役割を果たしています。

参考資料:

Unicode6.0.0/ch03.pdf'>Unicode Terminology English - Japanese (用語の日本語表記)
Unicode4.1.0/ch03.pdf'>The Unicode Standard 4.1 (UTF-32の公式な定義)
Unicode Standard Annex #19 (Unicode 3.x における UTF-32 の公式な定義)
Registration of new charsets: UTF-32, UTF-32BE, UTF-32LE (UTF-32がIANA charset登録簿に追加されたことの告知)

関連情報:

* Unicode#%E6%96%87%E5%AD%97%E7%AC%A6%E5%8F%B7%E5%8C%96%E6%96%B9%E5%BC%8F'>Unicode#文字符号化方式 (Wikipedia)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。