Java の UTF-16 エンコーディングにおけるサロゲート ペア
サロゲート ペアの概念は、コード ポイントを超える高いコード ポイントを持つ Unicode 文字を扱うときに発生します。 UTF-16 で使用される 16 ビット コード単位の範囲
サロゲート ペアとは何ですか?
UTF-16 では、サロゲート ペアは、単一のコード ポイントを表す 2 つのコード単位の組み合わせです。文字を単一の 16 ビット コード単位でエンコードできない場合は、次のように表されます。
上位サロゲートはコード ポイントの前半を示し、下位サロゲートは後半を示します。これらは一緒になって 32 ビット コード ポイントを形成します。
エンコードとデコード
U FFFF を超えるコード ポイントをサロゲート ペアにエンコードするプロセスは次のとおりです。
コード ポイントから 0x10000 を減算して上位サロゲートを取得します
上位サロゲート値を 10 ビット右にシフトします。
上位サロゲート値に U D800 を追加して、上位サロゲート コード ユニットを取得します。
コード ポイントの残りの 10 ビットを取得して、下位サロゲート値を取得しますサロゲート値。
下位サロゲート値に U DC00 を追加して、下位サロゲート コードを取得します。
サロゲート ペアからコード ポイントをデコードするには、逆のプロセスが必要です。
例
Unicode 文字 U 10400 を考えてみましょう。キャラクター ?。この文字をサロゲート ペアにエンコードするには:
U 10400 から 0x10000 を減算します: 0x400
0x400 を 10 ビット右にシフトします: 0x4
U D800 を 0x4 に加算します: U D804 (上位サロゲート コード ユニット)
Uを追加DC00 ~ 0x3C0: U DC00 (下位サロゲート コード ユニット)
文字 U 10400 は、サロゲート ペア U D804 U DC00 で表されるようになりました。
以上がJava の UTF-16 エンコーディングにおけるサロゲート ペアとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。