java - 用Java编写UTF-8文件

标签 java file utf-8

当我用 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/

相关文章:

.net - 有没有办法在 Windows 控制台中编写希伯来语?

c - Emacs、xterm、鼠标垫、C、Unicode 和 UTF-8 : Trying to make sense of it all

java - Kotlin 解构变量不适用于 Pair、Triple 或数据类

java - 配置 Hibernate 以使用 Oracle 的 SYS_GUID() 作为主键

c - 字符串数组与用户字符串比较给出访问错误

file - 如何从csv文件中读取数据并将其存储在数据库中? Spring Boot

java - 如何在java中为按钮定义 Action 监听器

java - Spark2 Java 数据集 Sql

无法打开 2 个文件 *

Php 阿拉伯字符没有正确连接