Java 7:调用Files.newBufferedReader时我应该使用什么字符集?

时间:2011-08-09 08:15:00

标签: java file-io nio java-7

在以前的Java版本中,我会通过创建这样的缓冲读取器来读取文件:

BufferedReader in = new BufferedReader(new FileReader("file.txt"));

在Java 7中,我想使用Files.newBufferedReader,但我也需要传入一个charset。例如:

BufferedReader in = Files.newBufferedReader(Paths.get("file.txt"), 
                                            Charset.forName("US-ASCII"));

以前,我在阅读纯文本文件时不必担心字符集。我应该使用什么字符集?你知道在以前版本的Java中默认使用了什么字符集吗?我只是希望能够找到并用新的陈述替换旧陈述。

2 个答案:

答案 0 :(得分:11)

  

以前,我在阅读纯文本文件时不必担心字符集。

嗯,你应该做的。如果您刚刚使用FileReader,则它使用系统的默认字符编码。这是个坏主意,这就是为什么我总是使用FileInputStreamInputStreamReader。你应该总是明确它。如果确实想要系统的默认字符编码,则应使用Charset.defaultCharset() - 但我强烈建议您不要。{/ p>

如果您要读取文件,您应该知道字符编码,并指定它。如果你决定在文件时使用什么字符编码,UTF-8是一个很好的默认选择。

答案 1 :(得分:0)

Java中的

PrintWriter / PrintStream默认为Charset.defaultCharset()

java.nio.charset.Charset.defaultCharset()