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