Java 7: какую кодировку я должен использовать при вызове Files.newBufferedReader? - PullRequest
5 голосов
/ 09 августа 2011

В предыдущих версиях Java я читал файл, создавая буферизованный читатель, например:

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

В Java 7 я хотел бы использовать Files.newBufferedReader, но мне также нужно передать кодировку. Например:

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

Раньше мне не приходилось беспокоиться о кодировках при чтении текстовых файлов. Какой кодировку я должен использовать? Вы знаете, какая кодировка использовалась по умолчанию в предыдущих версиях Java? Я просто хочу иметь возможность найти и заменить старое утверждение новым.

Ответы [ 2 ]

11 голосов
/ 09 августа 2011

Раньше мне не приходилось беспокоиться о кодировках при чтении текстовых файлов.

Ну, ты должен был это сделать.Если вы просто использовали FileReader, он использовал кодировку символов по умолчанию для системы.Это была плохая идея, поэтому я всегда использовал FileInputStream и InputStreamReader.Вы должны всегда быть откровенным об этом.Если вы действительно хотите использовать кодировку по умолчанию для системы, вам следует использовать Charset.defaultCharset(), но я настоятельно рекомендую вам этого не делать.

Если вы 'Чтобы прочитать файл, вы должны знать кодировку символов и указать это.Если вы решаете, какую кодировку использовать при записи файла, UTF-8 будет хорошим выбором по умолчанию.

0 голосов
/ 09 августа 2011

PrintWriter / PrintStream в Java по умолчанию имеет Charset.defaultCharset ()

java.nio.charset.Charset.defaultCharset()
...