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