Файл java file.encoding по умолчанию - Cp1252, но созданный файл - ISO-8859-1. - PullRequest
0 голосов
/ 03 мая 2018

Я проверил кодировку файла по умолчанию в jvm:

System.out.println("***file.encoding::" + System.getProperty("file.encoding")); 
// ***file.encoding::Cp1252

Но когда я написал новый файл, используя FileWriter:

bf = new BufferedWriter(new FileWriter(file));

Затем я проверяю файл кодировки, используя cmd:

file -i output-file.txt
output-file.txt: text/plain; charset=iso-8859-1

почему кодировка не Cp1252 вместо iso-8859-1?

1 Ответ

0 голосов
/ 03 мая 2018

cp1252 и iso-8859-1 - очень похожие кодировки, и file может не определить разницу на основе содержимого вашего файла, если оба они будут действительными кодировками.

Текстовые файлы не содержат метаданных о кодировке файла, единственный способ узнать это - прочитать несколько байтов и угадать. Для байтовых значений ниже 128 (т. Е. Большинство нормальных текстов на английском языке) эти две кодировки идентичны, поэтому невозможно определить, какой файл использовался для записи файла, если это единственные символы в файле.

...