Выводит крякозябры при считывании букв русского алфавита
Считываю файл, с латинскими буквами всё нормально, но русские превращаются в кракозябры:
184113, 745-?·?? ???? 17.07.2012,?°?? '???????????????????? ????????',7826729992,?°?? '???????????????????? ????????',7826729992,?°?????????°????????????????,???°??.?????????????° ???°??. (???? ???????????????? ??????. ???? ???°?????????? ????.),???????°??????.????????????????,-,20120720,20170405,20170601,-,http://www.gati-online.ru/op
Решении я нашел, но для C++ и PHP. Но вот для Java`ы нет...
Вот код:
public class main {
public static void main (String[] args) {
String pathToFIle = args[0];
String date = args[1];
try(FileInputStream fin=new FileInputStream(pathToFIle)) {
int i=-1;
while((i=fin.read())!=-1){
System.out.print((char)i);
}
}
catch(IOException ex){ System.out.println(ex.getMessage()); }
System.out.println("date = " + date);
}
}
Ответы (1 шт):
Автор решения: Bakuard
→ Ссылка
(По просьбе в комментариях - я вынес свой комментарий в ответ) Попробуйте эту конструкцию:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8));
Здесь вы явно задаете кодировку в которой считываете файл (по умолчанию, FileInputStream считывает файлы в системной кодировке). С помощью BufferedReader вы можете считывать файл построчно.