Я пытаюсь использовать класс Scanner для анализа текстовых файлов. Но оказывается, что если в файле есть русские слова, сканер вообще не может прочитать файл. scan.hasNextLine() возвращает false при первом вызове. Это нормальное поведение класса Scanner? Могу ли я что-то сделать, чтобы решить проблему?
Сканер не работает с файлами, содержащими символы кириллицы
comment
Используйте один из перегруженных конструкторов, который принимает имя набора символов, и укажите соответствующий набор символов, содержащий символы кириллицы.
- person Sotirios Delimanolis   schedule 03.02.2014
comment
@SotiriosDelimanolis Хотите ответить?
- person Duncan Jones   schedule 03.02.2014
comment
@ Дункан Нет, убери это. Я ничего не проверял.
- person Sotirios Delimanolis   schedule 03.02.2014
Ответы (1)
Для чтения текста, содержащего другую кодировку, необходимо использовать конструктор Scanner с дополнительным параметром "кодировка". Например, если файл, содержащий русские символы, имеет кодировку UTF-8, попробуйте сделать так:
String path = ... // full path of file
Scanner sc = new Scanner(new FileInputStream(path), "UTF-8");
//read file line by line
while (sc.hasNextLine()){
//read one line
String s = sc.nextLine();
//do something with line
System.out.println(s);
}
person
Lenin
schedule
12.11.2014