Как остановить сканер, изменяющий байты при вводе данных из файла в Java?

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

        File file = new File("mazes.txt");
        Scanner scan = new Scanner(file);  
        scan.useDelimiter("__________\n");  
        String record = scan.next();

но он меняет одни байты на другие байты. Например, если строка записи должна быть байтом с шестнадцатеричным значением 80, Scanner, похоже, преобразует его в байт с шестнадцатеричным значением ac. Как я могу вводить записи из файла без переключения байтов, как это?


person flea whale    schedule 22.02.2012    source источник
comment
Вам придется убедить нас, что что-то не так. Опубликуйте ввод, вывод и ожидаемый вывод, пожалуйста.   -  person calebds    schedule 22.02.2012


Ответы (1)


Из документации конструктора:

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

Если ваш файл имеет другую кодировку, вы должны использовать (например):

 Scanner scan = new Scanner(file,"UTF-8");  

or

 Scanner scan = new Scanner(file,"ISO8859-1");

и т.п.

person Daniel    schedule 22.02.2012
comment
whhhooooo, указание того, что файл является ISO, сработало, большое спасибо, это действительно полезно :) - person flea whale; 22.02.2012