请问,我下面这两个方法,第一个方法在读取中文文件时,显示出来的结果是乱码;第二个方法,在读取和写入中文文件时候都是乱码,请问这是为什么,该怎么才能解决中文问题呢,高手请帮我啊,高分相送。
public List readFileToList(File file) {
BufferedReader breader;
List list;
String line;
list = new ArrayList();
try {
breader = new BufferedReader(new FileReader(file));
while ((line = breader.readLine()) != null)
list.add(line);
breader.close();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public void copyFile(String sourcename, String targetname)
throws Exception {
BufferedReader breader;
BufferedWriter bwriter;
try {
breader = new BufferedReader(new FileReader(sourcename));
bwriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(targetname)));
while (breader.ready())
bwriter.write(breader.read());
breader.close();
bwriter.close();
}
catch (Exception e) {
throw e;
}
}
mark
读取文件时编码不对
//第一个这样转一下
try {
String temp;
byte[] temp_byte = str.getBytes("ISO8859-1");
temp = new String(temp_byte, "GBK");
return temp;
} catch (Exception e) {
return null;
}
//第二个,在write()方法后,加一句
String tmp = bwriter.toString("GBK");
//其中的编码,要看你的需要了
学习
temp = new String("iso8859_1", "GBK");
上面说的是一种方法,更好的方法是打开,或者写文件时按照一定的编码就什么问题都没有了
new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB23122"));
楼上的方法更好一些.
用java io时要注意
把InputStream 转换为 Reader时要注意编码,
因为InputStream是字节流,而Reader是以字符为单位.
加上相关的编码操作。
如果上面的结果还是不正确,此外在你的system的属性中,查看当前的字符集是否使你想要的,不是的话,用SetProPerty改变它。