请问,我下面这两个方法,第一个方法在读取中文文件时,显示出来的结果是乱码;第二个方法,在读取和写入中文文件时候都是乱码,请问这是为什么,该怎么才能解决中文问题呢,高手请帮我啊,高分相送。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;
}
}
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;
}
}
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");//其中的编码,要看你的需要了
new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB23122"));
用java io时要注意
把InputStream 转换为 Reader时要注意编码,
因为InputStream是字节流,而Reader是以字符为单位.
如果上面的结果还是不正确,此外在你的system的属性中,查看当前的字符集是否使你想要的,不是的话,用SetProPerty()改变它。