Приложение 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

2022-05-28T10:09:58+00:00
Вопросы с похожей тематикой, как у вопроса:

Приложение Java: невозможно правильно прочитать файл в кодировке iso-8859-1