① java 用FileInputStream中read方法读取文件出现乱码
read方法读取复的是字节流(制每次读取一个字节),如果是中文,就是两个字节,就会出现乱码的。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
② 怎么解决读取txt文件读取时中文乱码问题
从SDCard保存的txt文件读取中文到android系统中会出现乱码问题,如何解决这个乱码问题,网上有不少解答方法,譬如说利用String temp1 =EncodingUtils.getString(strLine.getBytes(),"GB2312"); 但并非对所有的情况都适用,解决乱码问题首先要明白为什么会乱码。究其原因,是因为txt文件在win系统上保存时默认为ANSI格式,而android目前只支持UTF-8编码,因此将txt文件的中文读入android系统中会产生乱码。也有人说直接将txt另存为UTF-8编码格式来解决乱码问题,但这种方法指标不治本,不能要求用户手动去更改格式,客户第一嘛。因此还是需要想办法在程序中进行处理。 以下做了一些编码格式的测试: 测试文本: 122.11196,29.90573,北仑固废厂 测试代码段: reader=new BufferedReader(new FileReader(filename)); strLine=reader.readLine() ; String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312"); String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8"); String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8"); 将文件存成 Unicode 格式 这种方式能得到非乱码的中文显示,但对于 utf-8 格式下取得的经纬度数字利用double lon = Double.parseDouble(lat); 报错 NumberFormatException,原因可能是 parseDouble(lat)方法不能处理存成utf-8格式的带标点小数。 将文件 存成 ANSI 格式 将代码改为: reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename),"GB2312")); strLine=reader.readLine() ; String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312"); String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8"); String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8"); 即解决了中文乱码问题,又解决了Double.parseDouble(lat)报错问题。
③ java读取文件乱码
那是你选中的文件内容字符编码与jvm缺省的文件编码不一致,如unix下jvm缺省文件编码一般为iso8859-1,而回你的文件内容可能使用了GBK,可使用如下答代码:
FileInputStream fis = new FileInputStream(Abs);
InputStreamReader isr = new InputStreamReader(fis, "GBK"); //GBK替换成你文件内容使用的编码
BufferedReader br = new BufferedReader(isr);
④ Java用BufferedReader读取文件中时总是乱码
@Test
publicvoidFileInput()throwsIOException{
Filef=newFile("io.txt");
FileInputStreamfip=newFileInputStream(f);
//构建InputStreamReader对象,编码与写入相同
InputStreamReaderreader=newInputStreamReader(fip,"UTF-8");
StringBufferstringBuffer=newStringBuffer();
while(reader.ready()){
//转成内char加到StringBuffer对象中容
stringBuffer.append((char)reader.read());
}
System.out.println(stringBuffer.toString());
reader.close();
fip.close();
}
⑤ java 文件IO 读取乱码问题
原因:文件的字符集编码与java程序运行环境的字符集编码不一致。
解决方法:回
BufferedReader br=new BufferedReader(new FileReader(path+"/"+title));
修改为答
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("path+"/"+title"),"UTF-8"));
UTF-8,更换为文件所用编码
⑥ 如何解决FileReader读文件乱码的问题
你好,问题来出在FileReader读取文件的自过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。
原因明确了,这个问题解决起来并不困难,用InputStreamReader代替FileReader,InputStreamReader isr=new InputStreamReader(new FileInputStream(fileName),"UTF-8");这样读取文件就会直接用UTF-8解码,不用再做编码转换。
⑦ java FileReader/FileWriter 读写字母和数字没问题,但读写汉字就乱码了.下面可以怎样改呢
兄弟你的代码在我这里运行没有问题
⑧ 怎么解决读取txt文件读取时中文乱码问题
以下做了一些编码格式的测试:
测试文本: 122.11196,29.90573,北仑固废厂 测试代码段:
reader=new BufferedReader(new FileReader(filename));
strLine=reader.readLine() ;
String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312");
String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8");
String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8");
将文件存成 Unicode 格式
这种方式能得到非乱码的中文显示,但对于 utf-8 格式下取得的经纬度数字利用double lon = Double.parseDouble(lat); 报错 NumberFormatException,原因可能是 parseDouble(lat)方法不能处理存成utf-8格式的带标点小数。 将文件 存成 ANSI 格式
将代码改为:
reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename),"GB2312"));
strLine=reader.readLine() ;
String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312");
String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8");
String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8");
即解决了中文乱码问题,又解决了Double.parseDouble(lat)报错问题。
⑨ java 用readline()读取带有汉字的文本文档,怎样才能做到不乱码
这个要根据文档的编码来处理,可以用read(bytes); new String(bytes, "gbk"); // 或其它编码ucs2,utf8之类的。
⑩ java,为什么读取文本文件里面的汉字是乱码啊,怎么改啊
汉字的字符集抄不匹配,比如说用UTF-8字符集去解析GBK字符集的汉字就会变成乱码
这里不要用FileReader,这个类用的是默认字符集去读取文本,改用InputStreamReader,它的构造方法中能够指定字符集,让它作为BufferedReader的源,就不会乱码了
hcl=new BufferedReader(new InputStreamReader(new FileInputStream(wjlj
), "GBK"));
如果还是乱码,就把GBK改成UTF-8