8文件

ie3xauqp  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(199)

这个问题在这里已经有答案了

java:无法用utf-8保存(3个答案)
5年前关门了。
当我用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字节表示是否相同?

pod7payv

pod7payv1#

utf-8和ansi对于前127个字符有相似的字节编码[1]。因此,如果你不使用任何其他字符,就没有办法区分。
判断它是否为utf-8的唯一方法是添加字节顺序标记,这是一组特制的字节,用于标记文件的编码:
bom的utf-8表示是字节序列 0xEF,0xBB,0xBF .
[1] unicode字符u+0000..u+007f,以utf-8和ascii的二进制表示形式表示为一个字节,并且都具有最高位0。

相关问题