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 字节转换为问号。
我有这个代码:
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 字节转换为问号。