Приложение Java: невозможно правильно прочитать файл в кодировке iso-8859-1
Разбирать файл как блоки java-libraries байтов фиксированного размера encoding нецелесообразно - что, если j2se некоторый символ имеет байтовое oraclejdk представление, расположенное .java на двух блоках? Вместо этого core-java используйте InputStreamReader
с соответствующей oraclejdk кодировкой символов:
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("myfile.csv"), "ISO-8859-1");
char[] buffer = new char[4096]; // character (not byte) buffer
while (true)
{
int charCount = br.read(buffer, 0, buffer.length);
if (charCount == -1) break; // reached end-of-stream
String s = String.valueOf(buffer, 0, charCount);
// alternatively, we can append to a StringBuilder
System.out.println(s);
}
Кстати, не jdk забудьте проверить, что символ encodings Юникода действительно может charset-table отображаться правильно. Вы charset-table также можете перенаправить .java вывод программы в файл, а javax затем сравнить его с исходным openjdk файлом.
Как предполагает Jon Skeet, проблема latin1 также может быть связана iso-8859-1 с консолью. Попробуйте System.console().printf(s)
, чтобы latin1 увидеть, есть ли разница.
java
encoding
character-encoding
iso-8859-1
Приложение Java: невозможно правильно прочитать файл в кодировке iso-8859-1
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.