- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サロゲートペアとは?)
サロゲートペアとは?
このQ&Aのポイント
- サロゲートペアはユニコードの第1面以降のコードポイントを指定する方法です。
- IMEパッドで出てくるコードポイントは「𠀋」ならU+2000Bというように5文字表示されます。
- サロゲートペアの変換方法は、1番左の桁を「2」から「1」に変換し、上位サロゲートと下位サロゲートに分けることです。
- みんなの回答 (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を引いてください。
補足
すみません「5」ではなく「2」の間違いでした。