UTF-16エンコーディングで記述されたバイナリモードでファイルを読み込み、UNICODEコードポイントに変換する必要があります。コードポイントをU + 0000..U + FFFF間隔から正常にマップするのに問題はありませんでした。問題は、U + 10000からU + 10FFFFまでです。UTF-16エンコーディングは、2つの部分を使用してコードポイントを形成します。Cを使用してUTF-16ファイルからUnicodeコードポイントをマップする方法
例:このロケットは、UNICODEコードポイント:U + 1F680を形成する0xD83D 0xDE80としてUTF-16でエンコードされています。
UTF-16エンコーディングは、間隔U + 0000からU + FFFFまでのUNICODEコードポイントとまったく同じであるため、UTF-16の読み込みをUNICODEコードポイントに変換するコードを記述しました。私のプログラムは最初の部分(D83D)を区間U + 0000からU + FFFFまでの何かであると理解しているので、問題はU + 10000と前方で発生します。
このエラーを回避するにはどうすればよいですか? UNICODEコードポイントを正常に形成するためには、読んでいる部分にもう1つの部分が必要であることを知るために、自分のコードを実行することができます。
ありがとうございます!
これは偽である:「UTF-16エンコーディング間隔U + 0000からU +のUNICODEコードポイントとまったく同じ数でありますFFFF "となる。 UTF-16 0xD800〜0xDFFFは、Unicode U + 10000を表す[surrogates](https://en.wikipedia.org/wiki/UTF-16#U.2BD800_to_U.2BDFFF)です。 –