java读取txt文件乱码经典问题

cqhweb 2009-05-16 08:11:53
现有以下一段java读取 txt类型文件的代码,代码本身没问题。

当分别读取 t1.txt 与 t2.txt 时,t1输出是没有乱码,而t2出现乱码。
后来: t1用 String encoding="UTF-8" t2用 String encoding="GBK" 才解决都不会出现乱码.

本人分析了一下,估计是t1与t2中的文件中字符编码不同,才造成输出结果不一致。
是否有办法读取文件时,既能解决t1与t2两种不同文件的字符编码。
否则没办法确定设置编码格式 String encoding="未知数";



try{
String encoding="UTF-8"; //字符编码

File f = new File(saveurl);

if(f.isFile() && f.exists()){


InputStreamReader read = new InputStreamReader (new FileInputStream(f),encoding);


BufferedReader in = new BufferedReader(read);
String line;
while((line = in.readLine())!=null) {
System.out.println(line);
}

read.close();
}

}
catch(Exception e){
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}




...全文
9884 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang0000meng 2009-09-18
  • 打赏
  • 举报
回复
java不太知道,不过.net知道点。原来xp系统默认的编码是gb2312
今天使用记事本时发现汉字乱码了。
WriteIntoText("别乱了sdfsdf士大夫师傅是",Server.MapPath("~/caiji/www.wearelearn.net.txt"));
发现其中汉字乱码了。
原来xp系统默认的编码是gb2312
解决办法:
增加这一行:StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
解决源码:

FileStream fs = new FileStream(str_SavePath, FileMode.OpenOrCreate);

StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));

sw.WriteLine(str_write);

sw.Close();

fs.Close();
转自:
http://www.wearelearn.net/asp_net/aspnetFile_9_35/621.html
JavaAlpha 2009-08-15
  • 打赏
  • 举报
回复
我用的可以
  • 打赏
  • 举报
回复
你的txt文件中有中文字符吧,要么不编码,要么将"UTF-8"改成"GB2312"
cjdxhc 2009-05-16
  • 打赏
  • 举报
回复
InputStreamReader类中有getEncoding()这个方法!
返回String
getEncoding()
返回此流使用的字符编码的名称。
rumlee 2009-05-16
  • 打赏
  • 举报
回复
好像没有这种办法,也就是说你应该在读取这个文件之前应该知道这个文件的编码格式才行吧。

62,616

社区成员

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

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