ユニコード規格

ユニコード規格 は、筆記文字およびテキストのための エンコード・スキームの仕様です。ユニコード規格は、多言語テキストの整合したエンコード を可能にし、テキスト・データを矛盾を起こすことなく国際間で交換できる ようにする汎用 標準です。C および C++ の ISO 規格とは、 ISO/IEC 10646-1:2000, Information Technology--Universal Multiple-Octet Coded Character Set (UCS) を指します。(octet という 用語は、ISO ではバイトを指す用語として使用されます。) ISO/IEC 10646 規格は、エンコード形式の 数においては、ユニコード規格より制限があります。したがって、ISO/IEC 10646 に準拠する文字セットは、 ユニコード規格にも準拠します。

ユニコード規格は、文字ごとに固有の数値と名前を指定しており、数値のビット表記に対して 3 つの エンコード形式を定義しています。名前と値のペアで 1 つの文字の識別が作成されます。1 つの 文字を表す 16 進数値をコード・ポイント と呼びます。ユニコード仕様は、 大/小文字、文字記述の方向、英字の特性、その他のセマンティック情報など、文字ごとに 文字の特性全体についても記述しています。ユニコード規格は ASCII をモデルとして、英字、漢字、 および記号に対応し、予約済みのコード・ポイントの範囲内でインプリメンテーションの定義によ る文字コード を許可しています。したがって、ユニコード規格のエンコード・スキームは、世界中のあらゆる国の 歴史的な筆記体も含めて、既知のすべての文字エンコードに対応できるだけの柔軟性を十分 に持っています。

C99 および C++ では、ISO/IEC 10646 で定義されている汎用文字名構成を使用して、 基本のソース文字セット外の文字を表すことができます。C99 言語と C++ 言語のどちらも ID、文字定数、およびストリング・リテラルに汎用文字名を使用することを許可しています。C++ では、この言語フィーチャーはコンパイル時に指定された言語レベルには影響されません。

次の表に、一般的な汎用文字名構成および ISO/IEC 10646 の短縮名との対応を示 します。

汎用文字名 ISO/IEC 10646 の短縮名
¥UNNNNNNNN NNNNNNNN
¥uNNNN 0000NNNN
ここでは、N は 16 進数字です。

C99 および C++ では、基本文字セット (基本ソース・コード・セット) 内の文字を表す 16 進数値、 および ISO/IEC 10646 で制御文字用に予約されているコード・ポイントは許可されません。 また以下の文字も使用できません。

XL C/C++ は、データ型 uint_least16_t および uint_least32_t をインプリメントして、ユニコード規格に準拠して C および C++ の UTF-16 文字および UTF-32 文字を処理します。 データ型はまた、それぞれ u-literals および U-literals として参照される、 UTF-16 または UTF-32 文字を指定するためにユニコード規格に必要なストリ ング・リテラルであり、C Standards Committee に承認されています。以前は、UTF-16 文字は、unsigned short で、 UTF-32 文字は unsigned int で表されました。

u-literals および U-literals のサポートは、ワイド文字リテラルのサポートに似ています。

u"s-char-sequence"
uint_least16_t の配列を示します。対応する文字リテラルは、以下によって示されます。
U'c-char-sequence'

U"s-char-sequence"
uint_least32_t の配列を示します。対応する文字リテラルは、以下によって示されます。
U'c-char-sequence'

例えば、次のようにします。

uint_least16_t  msg[] = u"ucs characters ¥u1234 and ¥U81801234 ";

ストリング連結

u-literals および U-literals は、ワイド文字リテラルと同じ連結規則に従います。 通常の文字ストリングが存在する場合、広げられます。 以下に、許可された組み合わせを示します。 他のすべての組み合わせは無効です。

組み合わせ 結果
u"a" u"b" u"ab"
u"a" "b" u"ab"
"a" u"b" u"ab"
   
U"a" U"b" U"ab"
U"a" "b" U"ab"
"a" U"b" U"ab"

これらの規則が再帰的に適用され、複数の連結が許可されます。

関連参照

IBM Copyright 2003