在用Java读写文件时,发现读取的文件在用控制台输出之后中文部分出现了乱码的问题。
先不吐槽为毛中文这么多怪事。
对于不同的文件,它们的默认编码格式可能是不同的,有的是gbk,有的是utf-8,又或者是ISO-8859-1之类的。
总而言之,一遇到中文就会出现各种奇怪的乱码行为,尤其是IDE还会有个默认的编码格式出来捣乱,比如Eclipse,它的默认编码就是GBK,但实际上,貌似utf-8用的更普遍一些。
那么,关于读写文件时出现的中文乱码问题应该如何解决呢?请看下面的代码。
File file = new File("C:\User.ftl");
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String nextline="";
while( (nextline=br.readLine()) !=null) {
nextline = new String(nextline.getBytes("GBK"),"UTF-8");//将读取出来的GBK格式的代码转换成UTF-8
//因为Eclipse的默认格式是GBK,而我们读到的ftl文件的格式是UTF-8
//当然,实际上要根据实际的情况来进行修正。
System.out.println(nextline);
}
}
也就是说,强制转换一下读取出来的字符串格式就行了。至于究竟要从哪个格式转换成哪个,就要看文件和IDE了。