ユニコード規格 は、書かれた文字と テキストに対するコード化スキームの仕様です。 ユニコード規格は、マルチリンガル・テキストのエンコードに整合性を持たせ、 矛盾を起こさずにテキスト・データを国際的に交換できるように した汎用の規格です。 C 用 ISO 規格は、「Information technology - Programming Languages - Universal Multiple-Octet Coded Character Set (UCS), ISO/IEC 10646:2003」を参照します。(octet という用語は、ISO ではバイトの意味で使用されます。) ISO/IEC 10646 規格は、エンコードのフォーム数がユニコード規格より制限され ています。すなわち、ISO/IEC 10646 に準ずる文字セットはユニコード規格も満たします。
ユニコード規格は、各文字に固有の数値と名前を指定しており、数値のビット表 現に 3 つのエンコード方式を定義しています。 名前と値のペアで文字の識別を行います。 文字を表す 16 進値はコード・ポイント と呼ばれます。 仕様には、全体の文字特性、すなわち、各文字の大/小文字、方向性、英字特性、 その他のセマンティクス情報も記述されています。 ASCII に基づくと、ユニコード規格は英字、表意文字、およびシンボルを扱い、予 約済みコード・ポイント範囲でインプリメンテーション別の文字コードを定義すること ができます。 したがって、ユニコード規格に準拠するエンコード方式は、世界中のすべての歴史的スクリプトへの対応を含め、あらゆる既知の文字エンコード要件を扱える十分な柔軟性があります。
C99 では、ISO/IEC 10646 で定義されているユニバーサル文字名構成を使用して、 基本ソース文字セット外の文字を表すことができます。ID、文字定数、およびストリング・リテラルでユニバーサル文字名を使用 することができます。
| ユニバーサル文字名 | ISO/IEC 10646 ショート・ネーム |
|---|---|
| ここでは、N は 16 進数字です。 | |
| ¥UNNNNNNNN | NNNNNNNN |
| ¥uNNNN | 0000NNNN |
C99 は、基本文字セット (基本ソース・コード・セット) 内の文字を表す 16 進値、および ISO/IEC 10646 で予約されているコード・ポイントを制御文字に使用することを禁止しています。
ISO C 委員会は、ユニコード UTF-16 および UTF-32 文字リテラルをサポートするために、それぞれ u-literals および U-literals のインプリメンテーションを承認しました。
| 構文 | 説明 |
|---|---|
| u'character' | UTF-16 文字を示します。 |
| u"character-sequence" | UTF-16 文字の配列を示します。 |
| U'character' | UTF-32 文字を示します。 |
| U"character-sequence" | UTF-32 文字の配列を示します。 |
| 組み合わせ | 結果 |
|---|---|
| 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" |