Я использую автономный сервер wildfly 10.1.0 и jdk версии 1.8.0 с обновлением 161 (x64).
При чтении файлов в кодировке ISO-8859-1 возникает проблема при запуске wildflyв Linux.
Символы типа Ç
и É
остаются как Ã?
.Когда код выполняется в Windows, все символы остаются в порядке.
Я проверил, и файл действительно закодирован как ISO-8859-1.Кроме того, код обеспечивает чтение файла как ISO-8859-1:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO-8859-1"));
Я пробовал перебирать все доступные кодировки, но не дал хороших результатов:
Charset.availableCharsets().keySet().stream().forEach( cs -> {
try {
Charset charset = Charset.forName(cs);
BufferedReader bufferedReader = Files.newBufferedReader(importFile.toPath() , charset );
File out = new File(outDir + cs + ".txt");
BufferedWriter bufferedWriter = Files.newBufferedWriter(out.toPath(), charset , StandardOpenOption.CREATE);
String ln = null;
bufferedWriter.write(cs+"\n");
while ( (ln = bufferedReader.readLine()) != null ) {
bufferedWriter.write(ln + "\n");
System.out.println(ln);
}
} catch (IOException e) {
e.printStackTrace();
}
} );
Как и ожидалось, это не проблема самой операционной системы, потому что, если я запускаю простую java-программу вне сервера приложений, которая читает тот же файл и записывает его содержимое, все идет отлично.
Кто-нибудь может мне помочь?Я тестировал Ubuntu 18.04 с UTF-8 в качестве кодировки системы по умолчанию.