Что ж, вы можете пытаться прочитать ваш файл, используя другую кодировку.
Вам необходимо использовать класс OutputStreamReader
в качестве параметра считывателя для вашего BufferedReader
.Он принимает кодировку.Просмотрите Java Docs .
Примерно так:
BufeferedReader out = new BufferedReader(new OutputStreamReader(new FileInputStream("jedis.txt),"UTF-8")))
Или вы можете установить текущую системную кодировку с системным свойством file.encoding
в UTF-8.
java -Dfile.encoding=UTF-8 com.jediacademy.Runner arg1 arg2 ...
Вы также можете установить его как системное свойство во время выполнения с System.setProperty(...)
, если оно понадобится только для этого конкретного файла, но в таком случае, как я думаю, я бы предпочел OutputStreamWriter
.
Установив системное свойство, вы можете использовать FileReader
и ожидать, что оно будет использовать UTF-8 в качестве кодировки по умолчанию для ваших файлов.В этом случае для всех файлов, которые вы читаете и записываете.
Если вы намерены обнаруживать ошибки декодирования в вашем файле, вам придется использовать подход OutputStreamReader
и использовать конструктор, который получает декодер.
В некотором роде
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
decoder.onMalformedInput(CodingErrorAction.REPORT);
decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
BufeferedReader out = new BufferedReader(new InputStreamReader(new FileInputStream("jedis.txt),decoder));
Вы можете выбирать между действиями IGNORE | REPLACE | REPORT