0

「FileInputStream」と「FileReader」を使用して、Unicode 文字を含むファイルからデータを読み取ります。

デフォルトのエンコーディングを「cp-1252」に設定すると、両方ともジャンク データが読み取られます。デフォルトのエンコーディングを UTF-8 に設定すると、両方とも正常に読み取られます。

  1. これらの両方がシステムデフォルトエンコーディングを使用してデータを読み取るというのは本当ですか?
  2. 次に、システムエンコーディングに依存する場合、文字ストリームを使用する利点は何ですか。
  3. 以下以外の方法はありますか:

     BufferedReader fis = new BufferedReader(new InputStreamReader(new FileInputStream("some unicode file"),"UTF-8"));
    

    デフォルトのエンコーディングが UTF-8 以外の場合にデータを正しく読み取るため。

4

1 に答える 1

1

FileReader と FileWriter は非推奨にする必要があります。使用する

new InputStreamReader(new FileInputStream(file), "UTF-8")

とか、ぐらい。

ここには、デフォルトのプラットフォーム エンコーディングを使用して、エンコーディング パラメータなしでオーバーロードされたバージョンも存在しますSystem.getProperty("file.encoding")

于 2012-12-14T09:07:03.470 に答える