Javaを使用して補足のUnicode文字を読み取るのに問題があります。補足セット(\ uFFFFより大きいもの)に文字が含まれている可能性のあるファイルがあります。UTF-8を使用してファイルを読み取るようにInputStreamReaderを設定すると、read()メソッドが補助文字ごとに1文字を返すことを期待しますが、代わりに16ビットのしきい値で分割されるようです。
基本的なUnicode文字ストリームについて他にもいくつか質問がありましたが、16ビットを超える場合は何も処理されていないようです。
簡略化したサンプルコードを次に示します。
InputStreamReader input = new InputStreamReader(file, "UTF8");
int nextChar = input.read();
while(nextChar != -1) {
...
nextChar = input.read();
}
補足文字を含むUTF-8エンコードファイルを正しく読み取るために私が何をする必要があるかを誰かが知っていますか?