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);
没有charset参数的
String#getBytes()
使用平台默认编码从字符串中获取字节,本身可能不是UTF-8。您已经通过
InputStreamReader
将字节读取为UTF-8,因此您无需在之后按摩它。 此外,请确保您的显示控制台(您正在读取这些行的位置)支持UTF-8。在Eclipse中,您可以通过Window> Preferences> General> Workspace> Text File Encoding> Other> UTF-8来实现。 也可以看看: Unicode - 如何使角色正确?     
而不是尝试直接打印出行,打印出每个字符的Unicode值。例如:
char[] chars = line.toCharArray();
for (int i = 0; i < chars.length; i++)
{
    System.out.println(i + ": " + chars[i] + " - " + (int) chars[i]);
}
然后在Unicode代码图表中查找相关字符。 如果你发现它的打印是63,那么那些确实是问号......这表明你的文本文件不是真正的UTF-8开头。 另一方面,如果某些字符打印出“?”但是然后是63以外的值,那么这表明它是控制台显示问题并且您正在正确地读取数据。     

要回复问题请先登录注册