我目前正在制作一个将中文单词保存到文本文件中的程序。我用 java 创建文本文件,然后尝试向其中写入文字。但是,我创建的文本文件从未以 UTF-8 编码。这是我正在使用的代码,为什么它不起作用?我被告知 Java 中存在一个固有的错误,但我不知道如何解决它。
public void createFile(String name) {
try {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(name +".txt"), "UTF-8"));
out.write("");
}
catch(java.io.IOException e) {
System.err.println("Something went wrong.");
}
}
此外,除了仍然可以使用 UTF 编码的文本文件之外,我还有其他选择吗?
我还通过打开 TextEdit 应用程序并尝试编写汉字来测试其编码。这也会是个问题吗?
最佳答案
首先,文件本身没有编码。它们是一堆 0 和 1。如果你用 utf-8 编写“asdf”,它与普通的旧 ascii7 完全没有区别。
如果您使用 utf-16 编写,那么字节顺序标记 (BOM) 将非常清楚地表明它是使用 utf-16 编写的,即使是空字符串,但 utf-8 不会需要存在这样的标记。
因此,您的编辑器无法知道该文件应该是用 utf-8 编写的。您可以通过以下方式将 utf-8 的 BOM 写入您的文件:
out.write(0xEFBBBF);
但是,在这种情况下,out
必须是一个 OutputStream,例如 FileOutputStream。 (BufferedWriter 和 OutputStreamWriter 不接受字节数组作为输入。)
关于java - 在 Java 中创建 UTF-8 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8116530/