有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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


共 (2) 个答案

  1. # 1 楼答案

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

    new FileReader("file.txt")
    

    因为它使用JVM默认字符编码——您可能无法控制它,显然Netbeans使用UTF-8,而您的操作系统定义了一些不同的东西。注意,如果您希望代码是可移植的,那么这使得^{}类完全无用

    而是使用以下代码段:

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

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

  2. # 2 楼答案

    也许这个例子会有所帮助。我将尝试将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
    

    但系统控制台的输出将是

    enter image description here