Java的UTF-8编码

Java's UTF-8 encoding

我有这个代码:

BufferedWriter w = Files.newWriter(file, Charsets.UTF_8);
w.newLine();
StringBuilder sb = new StringBuilder();
sb.append("\"").append("éééé").append("\";")
w.write(sb.toString());

但这行不通。最后我的文件没有 UTF-8 编码。我在写作时尝试这样做:

w.write(new String(sb.toString().getBytes(Charsets.US_ASCII), "UTF8"));

这使得文件中到处都是问号...

我发现有一个关于识别初始 BOM 字符 (http://bugs.java.com/view_bug.do?bug_id=4508058) 的错误,所以我尝试使用 BOMInputStream class。但是 bomIn.hasBOM() 总是 returns 错误,所以我想我的问题可能与 BOM 无关?

你知道如何让我的文件以 UTF-8 编码吗?问题在 Java 8 中解决了吗?

您在第一个示例中正确编写了 UTF-8(尽管您是从一个字符串冗余地创建一个字符串)

问题是您用来查看文件的查看器或工具没有将文件读取为 UTF-8。

不要混入 ASCII,那样只会将所有非 ASCII 字节转换为问号。