У меня есть файл tsv, и он содержит данные Unicode, такие как «Пэр Лагерквист получил Нобелевскую премию по физике». Но, читая его на Java, я получаю такой вывод, как «Пюр Лагерквист получил Нобелевскую премию по физике».
Я использую следующий фрагмент кода для чтения файла
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));
while ((st = br.readLine()) != null) {
System.out.println(st);
}
Боковое примечание: с Java 11 вы должны использовать try(var br = Files.newBufferedReader( Paths.get(fileName))) { /* your code using the BufferedReader */ } для чтения файла в кодировке UTF-8 с помощью BufferedReader.




Я предполагаю, что вы используете Intellij Idea. В этом случае установите кодировку консоли
-Dfile.encoding=UTF-8
В Windows отредактируйте файл idea.exe.vmoptions и добавьте указанную выше строку.
Подробнее см. это.
Похоже, он отлично читается. Проблема в том, что используемый вами терминал, похоже, не знает, как выход Unicode.