Выводит крякозябры при считывании букв русского алфавита

Считываю файл, с латинскими буквами всё нормально, но русские превращаются в кракозябры:

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 вы можете считывать файл построчно.

→ Ссылка