现有以下一段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();
}
后来: 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();
}
返回String
getEncoding()
返回此流使用的字符编码的名称。
今天使用记事本时发现汉字乱码了。
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