Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中读取Unicode字符_Java - Fatal编程技术网

在Java中读取Unicode字符

在Java中读取Unicode字符,java,Java,我使用“FileInputStream”和“FileReader”从包含unicode字符的文件中读取数据 当我将默认编码设置为“cp-1252”时,两者都在读取垃圾数据,当我将默认编码设置为UTF-8时,两者都读取良好 这两种方法都使用系统默认编码来读取数据,这是真的吗 如果字符流依赖于系统编码,那么使用字符流有什么好处呢 除了: BufferedReader fis = new BufferedReader(new InputStreamReader(new FileInputStream

我使用“FileInputStream”和“FileReader”从包含unicode字符的文件中读取数据

当我将默认编码设置为“cp-1252”时,两者都在读取垃圾数据,当我将默认编码设置为UTF-8时,两者都读取良好

  • 这两种方法都使用系统默认编码来读取数据,这是真的吗
  • 如果字符流依赖于系统编码,那么使用字符流有什么好处呢
  • 除了:

     BufferedReader fis = new BufferedReader(new InputStreamReader(new FileInputStream("some unicode file"),"UTF-8"));
    
    在默认编码不是UTF-8时正确读取数据


  • 不推荐使用FileReader和FileWriter。 使用

    大概吧


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

    为什么手动设置编码对您来说是一个不好的选择?@Aleksander Gralak,我们总是可以这样做的,我想知道如何通过编程实现,即使默认编码是不同的,但您是按编程方式进行的。它是硬编码的,但在源代码中。如果要在运行时执行此操作,请从某种属性获取字符串。对不起,我不明白你的问题是什么。看看这个
    FileInputStream
    读取原始八位字节(字节)。它没有字符编码的概念<代码>文件阅读器将数据从默认编码转换为UTF-16字符。默认编码是20世纪90年代遗留下来的;应首选Unicode编码;不情愿地使用使用默认编码的类型/方法。为什么不推荐读写器?它们应该读/写字符数据,这正是这种情况。只有文件版本,因为它们没有带字符集参数的重载版本。
    new InputStreamReader(new FileInputStream(file), "UTF-8")