现有以下一段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();
}

解决方案 »

  1.   

    InputStreamReader类中有getEncoding()这个方法!
    返回String 
    getEncoding() 
    返回此流使用的字符编码的名称。 
      

  2.   

    你的txt文件中有中文字符吧,要么不编码,要么将"UTF-8"改成"GB2312"
      

  3.   

    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