当我用 Java 创建一个 UTF-8 编码的文件,然后在记事本或 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 字节表示形式是否相同?
最佳答案
UTF-8 和 ANSI 对于前 127 个字符具有相似的字节编码 [1]。因此,如果不使用任何其他字符,则无法区分。
判断它是 UTF-8 的唯一方法是添加字节顺序标记,这是一组特殊制作的字节,用于标记文件的编码:
BOM 的 UTF-8 表示形式是字节序列 0xEF,0xBB,0xBF
。
[1] unicode 字符 U+0000..U+007F,以 UTF-8 和 ASCII 的二进制表示为一个字节,且最高位均为 0。
关于java - 用Java编写UTF-8文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27958939/