• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サロゲートペアとは?)

サロゲートペアとは?

このQ&Aのポイント
  • サロゲートペアはユニコードの第1面以降のコードポイントを指定する方法です。
  • IMEパッドで出てくるコードポイントは「𠀋」ならU+2000Bというように5文字表示されます。
  • サロゲートペアの変換方法は、1番左の桁を「2」から「1」に変換し、上位サロゲートと下位サロゲートに分けることです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

UTF-16 において、Unicode 第2面・追加漢字面を表現するには、以下の計算式を使います。 上位サロゲート = 0xD800 + (code-0x10000 >> 10) 下位サロゲート = 0xDC00 + (code-0x10000 & 0x3FF) この 0x10000 の減算ですが、コードの効率化のために行います。 サロゲートペアで表現できる文字コード範囲は 上位サロゲート10bit+下位サロゲート10bit = 20bit -> 16面分 もし減算しないならば、サロゲートペアで表現できる範囲は 第0-15面 ですが、 そもそも 第0面 はサロゲートペアを使うまでもないので、 除算することにより 第1-16面 を表現できるようにしています。 これにより UTF-16 で表現できる文字コード範囲は 2^16(第0面) - 2^11(サロゲートペア分) + 2^16*16(第1-16面) = 1,112,064 減算しない場合より 1面分だけお得となっております。 ご質問の > 1番左の桁を"2"から"1"にする。これをXとする。 は、要するに「0x10000で減算する」を回りくどく説明しているだけなので、 > しかし、5文字の1番左は必ず「5」なんでしょうか? 少々ずれた回答になりますが、必ず「0x10000」です。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

>しかし、5文字の1番左は必ず「5」なんでしょうか? ​​は、 >しかし、5文字の1番左は必ず「2」なんでしょうか? の間違いですかね? ​​ あなたが読んだページは、5桁目が2の場合について書いてあったのでしょう。 一般的には、0x10000を引いてください。

akmyu
質問者

補足

すみません「5」ではなく「2」の間違いでした。

関連するQ&A