我检查了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?
我也遇到相同的问题,尝试了几次,但是没有用。
cp1252和iso-8859-1是非常相似的编码,如果两个都是有效的编码,则file
可能无法根据文件的内容来区分它们。
文本文件不包含有关文件编码的任何元数据,唯一知道的方法是读取一些字节并进行猜测。对于小于128的字节值(即,大多数普通的英语文本),两种编码方式是相同的,因此,如果文件中仅有这些字符,则无法确定是哪个文件用于写文件。