Проблема кодировки Java FileReader

Вы все равно можете использовать литерал класса, даже для типа массива.

Class clazz = String[].class;
Class clazz2 = byte[].class;

В разделе 15.8.2 состояния JLS указано:

Литерал класса - это выражение, состоящее из имени класса, интерфейса, массива или примитивного типа или псевдотипа void, за которым следует символ. и токен class.

blockquote>

(смелый акцент мой)

124
задан nybon 14 January 2010 в 02:23
поделиться

2 ответа

Да, необходимо указать кодирование файла, который Вы хотите считать.

Да, это означает, что необходимо знать кодирование файла, который Вы хотите считать.

Нет, нет никакого общего способа предположить кодирование любого данного файла "простого текста".

Конструкторы FileReader всегда используйте кодировку по умолчанию платформы, которая обычно является плохой идеей.

Вместо FileReader необходимо использовать new InputStreamReader(new FileInputStream(pathToFile), <encoding>).

235
ответ дан 24 November 2019 в 01:05
поделиться

FileReader кодировка по умолчанию платформы Java использования, которая зависит от параметров настройки системы компьютера, на котором она работает и обычно является самым популярным кодированием среди пользователей в той локали.

Если это "лучшее предположение" не корректно затем, необходимо указать кодирование явно. К сожалению, FileReader не позволяет это (основной контроль в API). Вместо этого необходимо использовать new InputStreamReader(new FileInputStream(filePath), encoding) и идеально получите кодирование от метаданных о файле.

78
ответ дан 24 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: