我需要编写一个能够将UTF-8数据写入文件的程序。
我在互联网上找到了例子,但是,我无法取得理想的结果。
码:
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class UTF8WriterDemo {
public static void main(String[] args) {
Writer out = null;
try {
out = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("c://java//temp.txt"), "UTF-8"));
String text = "This texáát will be added to File !!";
out.write(text);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
一切都运行成功,但最后我看到特殊字符没有正确显示:这个texááit将被添加到文件!!
我从互联网上尝试了几个相同结果的例子。
我使用Visual Studio代码。
问题可能在哪里?
谢谢
你的代码是正确的。您可能已经有一个名为temp.txt的文件,因此Java会将文本写入现有文件(替换以前的内容)。可能存在的问题是您已在文件中设置的编码。
换句话说,您不能(或者至少不应该)使用例如WINDOWS-1250编码将UTF-8文本写入文件,否则您将得到您所描述的精确结果。
如果您没有此文件,Java将自动创建一个UTF-8编码的文件。
可能的解决方案:
顺便说一句,您应该使用StandardCharsets
类而不是使用String charsetName
以避免UnsupportedEncodingException:
new OutputStreamWriter(new FileOutputStream("temp.txt"), StandardCharsets.UTF_8)