コード ポイントとコード単位の関係
Crystal Reports for Visual Studio による GB18030 および Unicode のサポート方法を理解するには、コード ポイントとコード単位の関係を理解する必要があります。
コード ポイントとコード単位
個々のエンコードで、コード ポイントは 1 つまたは複数のコード単位にマップされます。
注 |
---|
コード ポイントの概要については、前のセクション「文字の観点」を参照してください。 |
“コード単位”は、各エンコード形式に含まれる 1 つの単位です。コード単位のサイズは、個々のエンコード形式のビット値と同じです。
- UTF-8 のコード単位は、8 ビットで構成されます。
- UTF-16 のコード単位は、16 ビットで構成されます。
- UTF-32 のコード単位は、32 ビットで構成されます。
- GB18030 では、コード単位は 8 ビットで構成されます。
各コード ポイントのコード単位数
コード ポイントへのマップが必要なコード単位数は、エンコード形式によって異なります。
UTF-8
UTF-8 では、コード単位が比較的小さいことから、1 コード ポイントにつき、複数のコード単位をマップすることが一般的です。コード ポイントは、1、2、3、または 4 つのコード単位にマップされます。
UTF-16
UTF-16 コード単位の大きさは、8 ビットのコード単位の 2 倍です。したがって、U+10000 よりもスカラ値が小さいコード ポイントは、1 つのコード単位でエンコードされます。
スカラ値が U+10000 以上のコード ポイントの場合は、コード ポイントごとに 2 つのコード単位が必要になります。これらのコード単位のペアには、UTF-16 独自の“Unicode サロゲート ペア”が含まれます。
注 Unicode サロゲート ペアのサポートについては、後述します。
UTF-32
UTF-32 で使用される 32 ビットのコード単位は、あらゆるコード ポイントを 1 つのコード単位でエンコードできる大きさとなります。
GB18030
GB18030 では、コード単位が比較的小さいことから、1 コード ポイントにつき、複数のコード単位をマップすることが一般的です。コード ポイントは、1、2、または 4 つのコード単位にマップされます。
Unicode サロゲート ペアのサポート
Unicode がサポートするスクリプトに、U+10000 以上のスカラ値を持つコード ポイントの文字が含まれる場合があります。UTF-16 では、このようなコード ポイントを、サロゲート ペアを使用してエンコードします。
Unicode サロゲート ペアは、適切に処理する必要があります。たとえば、エンコードに UTF-16 を使用するアプリケーションでテキストを操作している場合、切り取り、コピー、貼り付け操作のために文字を追加、削除、または選択するときは、各コード ポイントを 1 つのテキスト文字としてテキスト カーソルを動かす必要があります。