关于文件io:Java:无法保存为UTF-8

Java: can't save in UTF-8

我在Java中有以下代码行:

1
new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name, append),"UTF-8"));

编写者不会编写UTF-8文件,因为当我在notepad ++中打开文件时,它表示编码为:ANSI作为UTF-8。 我需要它是纯UTF-8。

你有什么建议吗?


notepad ++(和任何其他工具)只能猜测编码,它不会写在文件(或某些元数据)的任何位置。

而且,如果您编写的文本不包含ASCII范围之外的任何字符(即,没有Unicode码点> 127的字符),那么采用ANSI编码的文件就无法与采用UTF-8编码的文件区分开。


Notepad ++使用启发式算法来检测编码,即检测到的编码可能与真实编码有所不同(这是猜测)。

在这种情况下,Notepad ++是正确的,但是未正确标记编码。 ANSI as UTF-8是纯UTF-8,只是没有BOM。


Notepad ++最有可能需要文件开头的BOM。 首先将字节EF BB BF写入文件,然后再写入编码的字符。