Технически файл читается с использованием кодировки UTF-8, как вы сказали InputStreamReader
для этого. Базовые байты содержимого файла интерпретируются с использованием UTF-8. Метод readLine()
возвращает String
, который хранит символы внутри собственной кодировки UTF-16 Java.
То, что произойдет после этого, полностью зависит от того, что вы делаете с этим String
. Если вы записываете его обратно в файл, используя Writer
без указания кодировки, то будет использоваться платформа по умолчанию. Если вы выводите его на стандартный вывод, то будет использоваться набор символов по умолчанию, который зависит от среды выполнения (командная консоль? IDE? И т. Д.). Если вы сохраняете его в базе данных, это зависит от конфигурации драйвера JDBC и / или кодировки таблицы БД. Etcetera.
Очевидно, вы печатаете его на стандартный вывод в консоли Eclipse по System.out.println()
. В этом случае кодировка GBK будет использоваться для отображения символов. Это может привести к искажению любых первоначально прочитанных символов UTF-8, которые не охватываются GBK. Вам нужно настроить Eclipse для использования UTF-8 в качестве кодировки текстовых файлов. Это можно сделать с помощью Окно> Настройки> Общие> Рабочая область> Кодировка текстового файла .