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 回答