日期:2014-05-18  浏览次数:20799 次

BufferedReader乱码的问题
用的是BufferReader的readline()方法,可以正常读取显示字母和中文,但如果我的文件里面内容过长就会出现乱码。。。这个很纠结
package Stream;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class test2 {

/**
 * char stream
 */
public static void main(String[] args) {
FileReader myFile = null;
BufferedReader buff = null;
try{
myFile = new FileReader("abc.txt");
buff = new BufferedReader(myFile);
boolean eof = false;
while(!eof){
String string = buff.readLine();
if(string==null)
eof=true;
else
System.out.println(string);
}
}catch(IOException e){
e.printStackTrace();
}
finally{
try{
myFile.close();
buff.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

}


大概是大于41个字母或大于28个中文字符就乱码了,求解释
------解决方案--------------------
设置字符编码
------解决方案--------------------
看API说明
用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。 

BufferedReader buff = new BufferedReader(new InputStreamReader(new FileInputStream("abc.txt"), "gbk"));