这个问题在这里已经有答案了:
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字节表示是否相同?
1条答案
按热度按时间pod7payv1#
utf-8和ansi对于前127个字符有相似的字节编码[1]。因此,如果你不使用任何其他字符,就没有办法区分。
判断它是否为utf-8的唯一方法是添加字节顺序标记,这是一组特制的字节,用于标记文件的编码:
bom的utf-8表示是字节序列
0xEF,0xBB,0xBF
.[1] unicode字符u+0000..u+007f,以utf-8和ascii的二进制表示形式表示为一个字节,并且都具有最高位0。