编程语言
首页 > 编程语言> > Java BufferedReader阿拉伯文本文件问题

Java BufferedReader阿拉伯文本文件问题

作者:互联网

问题:java读取的文本文件中的阿拉伯词显示为一系列问号:??????

这是代码:

        File[] fileList = mainFolder.listFiles();
        BufferedReader bufferReader = null;
        Reader reader = null;


        try{

        for(File f : fileList){           
            reader = new InputStreamReader(new FileInputStream(f.getPath()), "UTF8");
            bufferReader = new BufferedReader(reader);
            String line = null;

            while((line = bufferReader.readLine())!= null){
               System.out.println(new String(line.getBytes(), "UTF-8"));
            }              

        }
        }
        catch(Exception exc){
            exc.printStackTrace();
        }

        finally {
            //Close the BufferedReader
            try {
                if (bufferReader != null)
                    bufferReader.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }

如您所见,我在不同的地方指定了UTF-8编码,但仍然出现问号,您知道如何解决此问题吗?

谢谢

解决方法:

更换

System.out.println(new String(line.getBytes(), "UTF-8"));

通过

System.out.println(line);

没有字符集参数的String#getBytes()即使用平台默认编码从字符串中获取字节,其本身可能不是UTF-8.您已经通过InputStreamReader将字节读取为UTF-8,因此之后无需进行反复处理.

此外,请确保您的显示控制台(您正在阅读这些行的地方)支持UTF-8.例如,在Eclipse中,您可以通过Window>偏好设置>一般>工作区>文本文件编码>其他> UTF-8.

也可以看看:

> Unicode – How to get the characters right?

标签:bufferedinputstream,character-encoding,text-files,arabic,java
来源: https://codeday.me/bug/20191023/1914473.html