急!高分请教高手,关于读取中文文件乱码问题!

zhongyiyutou 2005-06-03 03:57:54
请问,我下面这两个方法,第一个方法在读取中文文件时,显示出来的结果是乱码;第二个方法,在读取和写入中文文件时候都是乱码,请问这是为什么,该怎么才能解决中文问题呢,高手请帮我啊,高分相送。

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;
}
}
...全文
185 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
airhand 2005-06-03
  • 打赏
  • 举报
回复
加上相关的编码操作。
如果上面的结果还是不正确,此外在你的system的属性中,查看当前的字符集是否使你想要的,不是的话,用SetProPerty()改变它。
jolestar 2005-06-03
  • 打赏
  • 举报
回复
楼上的方法更好一些.
用java io时要注意
把InputStream 转换为 Reader时要注意编码,
因为InputStream是字节流,而Reader是以字符为单位.
eureka0891 2005-06-03
  • 打赏
  • 举报
回复
上面说的是一种方法,更好的方法是打开,或者写文件时按照一定的编码就什么问题都没有了
new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB23122"));
harbor1981 2005-06-03
  • 打赏
  • 举报
回复
学习

temp = new String("iso8859_1", "GBK");
grapepaul 2005-06-03
  • 打赏
  • 举报
回复
//第一个这样转一下
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");

//其中的编码,要看你的需要了
treeroot 2005-06-03
  • 打赏
  • 举报
回复
读取文件时编码不对
newste 2005-06-03
  • 打赏
  • 举报
回复
mark

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧