我有一个简单的程序,其中,我试图创建UTF-8格式的txt文件。但是,我看到该文件未使用UTF-8编码,但显示编码已设置为ANSI。以下是输出。你能帮忙吗?
public class fileCreate {
public static void main(String[] args) {
try {
System.out.println("Before encoding: "+System.getProperty("file.encoding"));
System.setProperty("file.encoding","UTF-8");
System.out.println("After encoding: "+System.getProperty("file.encoding"));
File file = new File("C:/tmp/myfile_UTF-8.txt");
if(file.createNewFile())System.out.println("Success!");
else System.out.println ("Error, file already exists.");
}
catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
输出:
编码前:Cp1252
编码后:UTF-8
成功!
答案 0 :(得分:0)
当您创建一个新的文件,它最初是空的。 “编码”不是文件的属性,而是您解释其内容字节的方式。这就是为什么在读写之前必须指定编码的原因,因为它没有存储在任何地方。
如果没有内容,编码是样未定义。你可能编辑挑选了第一次的猜测,这可能是ASCII。但空内容,也许可以与任何编码进行解码。
如果您在代码中向文件中写入了一些文本,则它将以UTF-8编码。然后,您的编辑器也将显示其编码(前提是它是一种很好的编码并且可以正确检测到它)。
答案 1 :(得分:-1)
您可以使用以下代码创建UTF-8文件
PrintWriter out1 = new PrintWriter(new File("C:/tmp/myfile_UTF-8.txt"), "UTF-8");