我完成了一个项目,其中我从用记事本编写的文本文件中读取了内容。我的文本文件中的字符是阿拉伯语,并且文件编码类型为UTF-8。在Netbeans(7.0.1)中启动我的项目时一切都正常,但是当我将项目构建为.jar文件后,字符以这种方式显示:ÇáãæÇÞÚááÊØæíÑ。请问我该如何解决这个问题?
我完成了一个项目,其中我从用记事本编写的文本文件中读取了内容。我的文本文件中的字符是阿拉伯语,并且文件编码类型为UTF-8。在Netbeans(7.0.1)中启动我的项目时一切都正常,但是当我将项目构建为.jar文件后,字符以这种方式显示:ÇáãæÇÞÚááÊØæíÑ。请问我该如何解决这个问题?
很可能您在某处使用了JVM默认的字符编码。如果您100%确定文件是使用UTF-8编码的,请确保在读取时明确指定UTF-8。例如,以下代码是错误的:
new FileReader("file.txt")
FileReader
类完全无用。new InputStreamReader(new FileInputStream("file.txt"), "UTF-8");
//I will read chars using utf-8 encoding
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream("d:\\data.txt"), "utf-8"));
//and write to console using Cp852 encoding (works for my windows7 console)
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out,
"Cp852"),true); // "Cp852" is coding used in
// my console in Win7
// ok, lets read data from file
String line;
while ((line = in.readLine()) != null) {
// here I use IDE encoding
System.out.println(line);
// here I print data using Cp852 encoding
out.println(line);
}
ąźżćąś adsfasdf
Ą«ľ†Ą? adsfasdf