Java 从文本文件读取阿拉伯文字符

Java 从文本文件读取阿拉伯文字符,java,Java,我已经完成了一个项目,其中我从一个用记事本写的文本文件中阅读。 我的文本文件中的字符是阿拉伯语,文件编码类型是UTF-8。 在Netbeans(7.0.1)内部启动我的项目时,一切似乎都正常,但当我将项目构建为(.jar)文件时,字符以这种方式显示:嘤嘤嘤啜嘤嘤æ嘤嘤嘤嘤嘤嘤ñ。 我怎样才能解决这个问题呢?很可能您正在某处使用JVM默认字符编码。如果100%确定文件是使用UTF-8编码的,请确保在读取时也明确指定UTF-8。例如,这段代码被破坏: new FileReader("file.txt

我已经完成了一个项目,其中我从一个用记事本写的文本文件中阅读。 我的文本文件中的字符是阿拉伯语,文件编码类型是UTF-8。 在Netbeans(7.0.1)内部启动我的项目时,一切似乎都正常,但当我将项目构建为(.jar)文件时,字符以这种方式显示:嘤嘤嘤啜嘤嘤æ嘤嘤嘤嘤嘤嘤ñ。
我怎样才能解决这个问题呢?

很可能您正在某处使用JVM默认字符编码。如果100%确定文件是使用UTF-8编码的,请确保在读取时也明确指定UTF-8。例如,这段代码被破坏:

new FileReader("file.txt")
因为它使用JVM默认字符编码——您可能无法控制它,显然Netbeans使用UTF-8,而您的操作系统定义了一些不同的东西。请注意,如果您希望代码是可移植的,这会使类完全无用

而是使用以下代码段:

new InputStreamReader(new FileInputStream("file.txt"), "UTF-8");

您没有提供您的代码,但这应该给您一个如何实现的总体印象。

也许这个示例会有所帮助。我将尝试将utf-8文件的内容打印到IDE控制台和编码为“Cp852”的系统控制台

我的
d:\data.txt
包含
adsfasdf

让我们检查一下这个代码

//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);
}
当我在Eclipse中运行它时,输出将是

ąźżćąś adsfasdf
Ą«ľ†Ą? adsfasdf
但系统控制台的输出将是


您能告诉我们您是如何从文件中读取这些字符并使用它们的吗?就是这样。非常感谢。