ホームページ >Java >&#&チュートリアル >Java の UTF-16 エンコーディングにおけるサロゲート ペアとは何ですか?

Java の UTF-16 エンコーディングにおけるサロゲート ペアとは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 10:12:111022ブラウズ

What are Surrogate Pairs in Java's UTF-16 Encoding?

Java の UTF-16 エンコーディングにおけるサロゲート ペア

サロゲート ペアの概念は、コード ポイントを超える高いコード ポイントを持つ Unicode 文字を扱うときに発生します。 UTF-16 で使用される 16 ビット コード単位の範囲

サロゲート ペアとは何ですか?

UTF-16 では、サロゲート ペアは、単一のコード ポイントを表す 2 つのコード単位の組み合わせです。文字を単一の 16 ビット コード単位でエンコードできない場合は、次のように表されます。

  • 上位サロゲート コード単位がペアの先頭で使用され、範囲は U D800 です。から U DBFF.
  • 下位サロゲート コード ユニットが上位サロゲートに続き、U DC00 ~ U の範囲になります。 DFFF.

上位サロゲートはコード ポイントの前半を示し、下位サロゲートは後半を示します。これらは一緒になって 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。