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

dog*_*ane 5 java file-io nio java-7

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

BufferedReader in = new BufferedReader(new FileReader("file.txt"));
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jon*_*eet 11

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

好吧,你应该做的.如果您刚刚使用FileReader,则使用系统的默认字符编码.这是一个坏主意,这就是为什么我总是使用FileInputStream和一个InputStreamReader.你应该总是明确它.如果你真的想为系统默认的字符编码,你应该使用Charset.defaultCharset()-但我强烈建议你不要.

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

  • 是的,`defaultCharset()`会给你以前的行为.只要你知道它几乎肯定不是正确的决定...... (3认同)