在Java中读取Unicode字符

时间:2012-12-14 09:01:00

标签: java

我使用“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时正确读取数据。

1 个答案:

答案 0 :(得分:1)

FileReader和FileWriter应该弃用恕我直言。 使用

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

左右。

此处还存在一个没有编码参数的重载版本,使用默认平台编码:System.getProperty("file.encoding")