用Java编写UTF-8文件

时间:2015-01-15 08:00:34

标签: java file utf-8

当我用Java创建一个UTF-8编码的文件时,我在Notepad或Notepad ++中打开它后说它是ANSI编码的。怎么会?

File file = new File("path\to\file");
file.createNewFile();
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8));

writer.write("something");
writer.flush();
writer.close();

如果我写一些像Æ这样的特殊字符。 Ø或Å到文件,然后记事本说它是UTF-8编码。这是为什么?

如果不包含特殊字符,ANSI和UTF-8字节表示是否相同?

1 个答案:

答案 0 :(得分:3)

UTF-8和ANSI对前127个字符[1]具有相似的字节编码。因此,如果您不使用任何其他字符,则无法区分它们。

告诉它的唯一方法是UTF-8是添加字节顺序标记,它是一组标记文件编码的特殊字节:

BOM的UTF-8表示是字节序列0xEF,0xBB,0xBF

[1] unicode字符U + 0000..U + 007F,它们具有UTF-8和ASCII作为一个字节的二进制表示,并且都具有最高位0.