Вопрос по чтению текстовых файлов на Java. У меня есть текстовый файл, сохраненный в кодировке UTF-8 только с содержимым:
Hello. Мир.
Теперь я использую RandomAccessFile
, чтобы прочитать этот класс. Но по какой-то причине в начале файла, кажется, есть «невидимый» символ ...?
Я использую этот код:
File file = new File("resources/texts/books/testfile2.txt");
try(RandomAccessFile reader = new RandomAccessFile(file, "r")) {
String readLine = reader.readLine();
String utf8Line = new String(readLine.getBytes("ISO-8859-1"), "UTF-8" );
System.out.println("Read Line: " + readLine);
System.out.println("Real length: " + readLine.length());
System.out.println("UTF-8 Line: " + utf8Line);
System.out.println("UTF-8 length: " + utf8Line.length());
System.out.println("Current position: " + reader.getFilePointer());
} catch (Exception e) {
e.printStackTrace();
}
Вывод такой:
Read Line: ?»?Hello. World.
Real length: 16
UTF-8 Line: ?Hello. World.
UTF-8 length: 14
Current position: 16
Эти (1 или 2) символы появляются только в самом начале. Если я добавлю больше строк в файл и прочту их, то все дальнейшие строки читаются нормально.
Может кто-нибудь объяснить это поведение? Что это за персонаж в начале?
Спасибо!