2012-01-07 18 views

答えて

8

はい、Java文字はUTF-16コード単位です。 Basic Multilingual Planeの外でUnicode文字を表現する必要がある場合は、java.lang.String内の代理ペアを使用する必要があります。 Stringクラスは、codePointAt(index)など、完全なUnicodeコードポイントを扱うさまざまなメソッドを提供します。 section 3.1 of the Java Language Specificationから

ユニコード規格は、もともと固定幅16ビットの文字エンコーディングとして設計されました。 16ビット以上の表現が必要な文字を使用できるように変更されました。正当なコードポイントの範囲は、U + 0000〜U + 10FFFFで、16進数のU + n表記を使用しています。コードポイントがU + FFFFより大きい文字を補助文字と呼びます。 Unicode標準では、16ビット単位のみを使用して完全な文字範囲を表現するために、UTF-16と呼ばれるエンコーディングが定義されています。この符号化では、補助文字は、上位サロゲート範囲(U + D800〜U + DBFF)の1番目と、低サロゲート範囲(U + DC00〜U + DFFF)。 U + 0000〜U + FFFFの範囲の文字の場合、コードポイントとUTF-16コードユニットの値は同じです。

Javaプログラミング言語は、UTF-16エンコーディングを使用して16ビットコード単位のシーケンスでテキストを表します。主にCharacterクラスのいくつかのAPIでは、コードポイントを個々のエンティティとして表すために32ビットの整数が使用されます。 Javaプラットフォームは、2つの表現を変換するメソッドを提供します。

詳細については、Character docsを参照してください。

2

符号なし16ビットであるcharは0xFFFFまでの任意のコードポイントを表すことができますが、補足文字は大きくなりません。 JavaはcharでUTF-16エンコーディングを使用すると最もよく考えられます。したがって、補助文字は実際には代理ペアのcharのペアとして表されます。 1つのcharはそのような補助文字を表すことができませんが、Javaはそれを処理します。

関連する問題