这段代码,
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
out.write("A".getBytes());
And this,
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
out.write("A".getBytes(StandardCharsets.UTF_8));
在我看来,下面两种方法都能产生相同的结果,即UTF-8无BOM。然而,Notepad++没有显示任何有关编码的信息。我期望Notepad++在这里显示以UTF-8无BOM编码保存
,但是在“编码”菜单中未选择任何编码。
现在,这段代码会以UTF-8带BOM编码方式写入文件。
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++显示编码类型为UTF-8编码
。
问题:前两个代码写入没有BOM的UTF-8文件有什么问题?我的Java代码是否正确?如果是,那么notepad++尝试检测编码类型是否有问题?
Notepad++只是猜测吗?