У меня проблема с чтением закодированного файла, ранее налагаемого на мой собственный код.Java - Невозможно правильно прочитать ранее созданный закодированный файл
Исходная строка отображается правильно (в том числе ударения)
Мой код, чтобы сохранить строку в закодированный файл состоит в следующем:
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(fileName),
"ISO-8859-1");
writer.write(text);
Затем я прочитал файл, как это : не корректно отображается результат
InputStream is = getClass.getResourceAsStream(fileName);
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is, "ISO-8859-1"));
String line;
StringBuilder sb = new StringBuilder();
while((line = br.readLine()) != null) {
sb.append(line);
}
String result = sb.toString();
} catch (UnsupportedEncodingException e3) {
} catch (IOException e) { }
Строка. Например, метки акцента отсутствуют.
Я также пробовал другие способы, такие как кодирование строки в байтах, а затем записывать в файл эти байты. Я всегда получаю те же результаты, что и другие кодировки ISO. Есть идеи?
API работает хорошо, должна быть некоторая другая ошибка в настройках кодирования вашего терминала. – Kennet
Вы пишете файл в файловой системе, но чтение происходит из ресурса, на пути к классу, возможно, упакованного в банку или в войну. Это может означать, что вы говорите о двух разных файлах, возможно, в вашем исходном каталоге, в каталоге сборки или в банке. И чтение может быть даже в кешированной версии, до письменной. Измените содержимое, чтобы проверить это. (И тогда 'append (" \ r \ n ")' отсутствует, равно как и закрытые вызовы.) –
Невозможно воспроизвести. Если вы читаете файл с той же кодировкой, что и для его записи, вы получаете одинаковые символы, но мне пришлось добавить явный 'writer.close()', чтобы на самом деле писать. Что может случиться: не читать ожидаемый файл, как предлагается Joop, отображая один из файлов на неправильно сконфигурированном терминале и т. Д. Но это ** не ** проблема преобразования Java. –