0

我在java中有这行代码:

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

这个作家没有写一个 UTF-8 文件,因为当我在记事本++中打开它时,它说编码是:ANSI as UTF-8。我需要它是纯 UTF-8。

你有什么建议吗?

4

3 回答 3

11

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

如果您编写的文本不包含任何超出 ASCII 范围的字符(即没有 Unicode 代码点 > 127 的字符),那么使用 ANSI 编码的文件与使用 UTF-8 编码的文件无法区分。

于 2011-07-22T08:52:33.133 回答
6

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

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

于 2011-07-22T08:52:40.573 回答
-1

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

于 2011-07-22T08:54:19.013 回答