java 文件IO 读取乱码问题

String detials="";
String line="";
StringBuffer temp=null;
temp=new StringBuffer("");
try {
BufferedReader br=new BufferedReader(new FileReader(path+"/"+title));
while((line=br.readLine())!=null)
{
temp.append(line);
}
detials=new String(temp);
br.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("====================="+detials);

为什么会这样?怎么解决?

比较简单的做法,利用FileReader。参见代码:

测试文件: b.txt

IoTest.java

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-07
原因:文件的字符集编码与java程序运行环境的字符集编码不一致。

解决方法:
BufferedReader br=new BufferedReader(new FileReader(path+"/"+title));

修改为
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("path+"/"+title"),"UTF-8"));

UTF-8,更换为文件所用编码追问

试了一下 还是乱码 不知道为什么
这和写android程序有关系吗

追答

你文件用的是什么编码?

追问

默认的,我用gbk和gb2312好像也不行,怎么看文本文件编码格式

本回答被提问者和网友采纳
第2个回答  2015-08-08
如果出现乱码的话,可以在读的时候getByte()。
第3个回答  2012-09-07
FileReader是用default编码读文件,所以你没法指定编码。要指定编码得先把文件用FileInputStream以stream的方式读出来,再用InputStreamReader来指定编码:
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(path+"/"+title)), "utf-8");
第4个回答  2015-08-21
编码问题,文件是什么编码就用什么编码读取
相似回答