Write UTF-8 file in Java
本问题已经有最佳答案,请猛点这里访问。
当我用 Java 创建一个 UTF-8 编码的文件,然后我在记事本或记事本中打开它时,它说它是 ANSI 编码的。怎么来的?
1 2 3 4 5 6 7 | 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 表示是字节序列
[1] Unicode 字符 U 0000..U 007F,以 UTF-8 和 ASCII 二进制表示为一个字节,最高位为 0。