用java读取乌尔都语文件

用java读取乌尔都语文件,java,eclipse,urdu,Java,Eclipse,Urdu,我试图读取一个包含乌尔都语数据的文件。当我在Notepad++中查看文件时,它的数据是乌尔都语。但当我在eclipse中查看它时,它显示了某种类型的编码(可能是它得到了一些默认值) 原始乌尔都语数据(记事本++): 在eclipse中: "10","کراچی میں ٹماٹر Ú©ÛŒ قیمت میں کمی،25روپے Ù�ÛŒ کلو Û�وگیا","Entertainment" 现在这很奇怪,默认情况下会发生

我试图读取一个包含乌尔都语数据的文件。当我在Notepad++中查看文件时,它的数据是乌尔都语。但当我在eclipse中查看它时,它显示了某种类型的编码(可能是它得到了一些默认值)

原始乌尔都语数据(记事本++):

在eclipse中:

"10","کراچی میں ٹماٹر کی قیمت میں کمی،25روپے �ی کلو �وگیا","Entertainment"
现在这很奇怪,默认情况下会发生一些编码。是否有任何方法可以获取原始形式的数据,这样当我对其进行处理并将其写入文件时,我希望处理后的数据是原始乌尔都语形式的,而不是任何编码

private void readDataFromFile(String fileName)
{
    Path path = Paths.get(fileName);
    Charset charset = StandardCharsets.UTF_8;
    try (BufferedReader br = Files.newBufferedReader(path, charset)) {
        String line;
        while( (line = br.readLine()) != null )
        {
            System.out.println(line);
        }
    }
    catch(Exception ex) {
        ex.printStackTrace();
    }
}
这是代码

public class DataProcessing {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DataProcessing dataProcessingObj = new DataProcessing();
        dataProcessingObj.readDataFromFile("small_dataset.txt");
    }

    private void readDataFromFile(String fileName)
    {
        BufferedReader  br = null;
        try{
            br = new BufferedReader(new FileReader(fileName));
            String line = "";
            while( (line = br.readLine()) != null )
            {
                System.out.println(line);
            }
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

如果您能帮助我,我将非常感谢您。

不要使用FileReader/FileWriter,因为它们是使用默认平台编码的旧实用程序类。您想要指定编码,或者UTF-8或者Windows-1256。(记事本++将显示正确的编码。)

或者在java 8中:

private void readDataFromFile(String fileName) throws IOException
{
    Path path = Paths.get(fileName);
    Charset charset = Charset.forName("Window-1256");
    Files.lines(path, charset).forEach(System.out::println);
}

文件以什么字符编码保存?您是如何读取文件内容并在应用程序中显示它的?代码有问题。@Jesper我如何知道我的文件保存在哪个字符编码中?您的代码正在使用系统的默认字符编码读取文本文件。如果文件实际上是用不同的字符编码方式编码的,则会得到错误的结果。使用
新的InputStreamReader(新的FileInputStream(文件名),“UTF-8”)
(如果文件是用UTF-8编码的;如果是其他文件,请使用适当的字符集名称)。您可以使用
系统.out.println()将输出打印到控制台。您确定控制台使用的字体可以显示乌尔都语字符吗?如果字体没有这些字符,你会得到问号。我无法得到我的原始乌尔都语文本。当我打印它时,它会显示以下结果。“10”、“25”、“娱乐”系统。out则无法显示编码。改为使用UTF-8写入文件
private void readDataFromFile(String fileName) throws IOException
{
    Path path = Paths.get(fileName);
    Charset charset = Charset.forName("Window-1256");
    Files.lines(path, charset).forEach(System.out::println);
}