次の方法で共有


コード ポイントとコード単位の関係

Crystal Reports for Visual Studio による GB18030 および Unicode のサポート方法を理解するには、コード ポイントとコード単位の関係を理解する必要があります。

コード ポイントとコード単位

個々のエンコードで、コード ポイントは 1 つまたは複数のコード単位にマップされます。

Note

コード ポイントの概要については、前のセクション「文字の観点」を参照してください。

“コード単位”は、各エンコード形式に含まれる 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 サロゲート ペア”が含まれます。

    Note

    Unicode サロゲート ペアのサポートについては、後述します。

  • UTF-32

    UTF-32 で使用される 32 ビットのコード単位は、あらゆるコード ポイントを 1 つのコード単位でエンコードできる大きさとなります。

  • GB18030

    GB18030 では、コード単位が比較的小さいことから、1 コード ポイントにつき、複数のコード単位をマップすることが一般的です。コード ポイントは、1、2、または 4 つのコード単位にマップされます。

Unicode サロゲート ペアのサポート

Unicode がサポートするスクリプトに、U+10000 以上のスカラ値を持つコード ポイントの文字が含まれる場合があります。UTF-16 では、このようなコード ポイントを、サロゲート ペアを使用してエンコードします。

Unicode サロゲート ペアは、適切に処理する必要があります。たとえば、エンコードに UTF-16 を使用するアプリケーションでテキストを操作している場合、切り取り、コピー、貼り付け操作のために文字を追加、削除、または選択するときは、各コード ポイントを 1 つのテキスト文字としてテキスト カーソルを動かす必要があります。