这段代码,
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
out.write("A".getBytes());
和这个,
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
out.write("A".getBytes(StandardCharsets.UTF_8));
产生相同的结果(在我看来),即没有 BOM 的 UTF-8。但是,Notepad++ 没有显示任何关于 encoding 的信息。我希望 notepad++ 在这里显示为Encode in UTF-8 without BOM
,但在“编码”菜单中没有选择编码。
现在,此代码使用 BOM 编码以 UTF-8 格式写入文件。
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
byte[] bom = { (byte) 239, (byte) 187, (byte) 191 };
out.write(bom);
out.write("A".getBytes());
Notepad++ 也将编码类型显示为Encode in UTF-8
.
问题:假设在没有 BOM 的情况下以 UTF-8 写入文件的前两个代码有什么问题?我的 Java 代码做对了吗?如果是这样,notepad++ 尝试检测编码类型是否有问题?
记事本++只是猜测吗?