急!高分请教高手,关于读取中文文件乱码问题!
请问,我下面这两个方法,第一个方法在读取中文文件时,显示出来的结果是乱码;第二个方法,在读取和写入中文文件时候都是乱码,请问这是为什么,该怎么才能解决中文问题呢,高手请帮我啊,高分相送。
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;
}
}
问题点数:100、回复次数:7Top
1 楼newste(旭林)回复于 2005-06-03 16:12:23 得分 5
markTop
2 楼treeroot(旗鲁特)回复于 2005-06-03 16:17:03 得分 10
读取文件时编码不对Top
3 楼xiaopeipei2004(小裴)回复于 2005-06-03 16:21:21 得分 20
//第一个这样转一下
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");
//其中的编码,要看你的需要了Top
4 楼harbor1981(我向你飞,泪温柔地坠!)回复于 2005-06-03 16:29:36 得分 5
学习
temp = new String("iso8859_1", "GBK");Top
5 楼eureka0891(迷茫中...)回复于 2005-06-03 17:53:29 得分 20
上面说的是一种方法,更好的方法是打开,或者写文件时按照一定的编码就什么问题都没有了
new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB23122"));
Top
6 楼Jolestar(叶明)回复于 2005-06-03 18:38:20 得分 20
楼上的方法更好一些.
用java io时要注意
把InputStream 转换为 Reader时要注意编码,
因为InputStream是字节流,而Reader是以字符为单位.Top
7 楼airhand(暴风雨)回复于 2005-06-03 19:24:39 得分 20
加上相关的编码操作。
如果上面的结果还是不正确,此外在你的system的属性中,查看当前的字符集是否使你想要的,不是的话,用SetProPerty()改变它。Top




