Сканер не работает с файлами, содержащими символы кириллицы

Я пытаюсь использовать класс Scanner для анализа текстовых файлов. Но оказывается, что если в файле есть русские слова, сканер вообще не может прочитать файл. scan.hasNextLine() возвращает false при первом вызове. Это нормальное поведение класса Scanner? Могу ли я что-то сделать, чтобы решить проблему?


person Roman    schedule 03.02.2014    source источник
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