以 utf-8 格式保存 txt 文件时出现编码问题

Encoding Problem while saving a txt file in utf-8

下一行

Files.write(Paths.get("test.txt"), Arrays.asList("ü"), StandardCharsets.UTF_8);

应该在 test.txt 中写一个 ü 编码为 utf-8- 至少这是我期望它做的。但是如果我在文本编辑器中打开文件,编辑器会显示

ü

并且编辑器声明它将以 utf-8 格式读取文件。我什至尝试了两个编辑器,都显示出相同的意外结果。 十六进制编辑器显示

c3 83 c2 bc 0d 0a

最后四个字节是换行和回车return,没关系,但前两个字节应该是c3 bc...因为这应该是[=的十六进制编码13=] 在 UTF-8 中(根据 https://www.utf8-zeichentabelle.de/

java-文件以 UTF-8 编码,经两位编辑确认。

我错过了什么?为什么 ü 没有以 utf-8 编码,即使我明确地将字符集传递给 Files.write()

尝试使用 ASCII u-encoding: "\u00FC" 而不是 "ü"。如果这突然起作用,则意味着编辑器使用了不同于 javac 编译器 (Cp1252) 的其他编码 (UTF-8)。顺便说一句: StandardCharsets.UTF_8 是默认的.

java 源在编辑器中保存为 UTF-8,两个字节设置了高位。 java 编译器 javac 使用编码 Cp1252(可能)编译并将两个字节转换为两个字符,作为 UTF-8 加起来为 4 个字节。

因此必须设置编译器编码。 在这种情况下也适用于 test 来源。