输出到控制台屏幕正常,但是输出到文件就错了:( 我刚学C#三四天哦,以前在学校的时候只接触了一点C,所以问出来的问题很傻,msdn看的我一头雾水,实在想不出为什么,请各位大侠不吝赐教啊,小弟感激不尽! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 保存到文件之前试试这么做, 把里面的换行符替换一下, 像这样:str = str.Replace("\n", "\r\n"); 你把 StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.Encoding.GetEncoding("gb2312"));改为StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.UTF8Encoding.Default);看看 main_body = main_body.Replace("\n", "\r\n");temp_sw.Write(main_body); //帮楼主写了一下using System;using System.IO;class Class1{ static void Main() { L6: Console.WriteLine("请输入含有中文的文本文件(gb2312):"); string MAIL_BODY_ORIGINAL_PATH = Console.ReadLine().Trim(); if(!File.Exists(MAIL_BODY_ORIGINAL_PATH)) { Console.WriteLine("文件不存在!\n"); goto L6 ; } Console.WriteLine("正在载入文本文件。"); StreamReader body_file_sr = new StreamReader(MAIL_BODY_ORIGINAL_PATH,System.Text.Encoding.GetEncoding("gb2312")); string main_body = body_file_sr.ReadToEnd(); body_file_sr.Close(); Console.WriteLine("载入成功!\n"); L7: Console.WriteLine("请输入输出文件名:"); string OUTPUT_FILE = Console.ReadLine().Trim(); if(OUTPUT_FILE.Length == 0) { Console.WriteLine("输出文件名不能为空!\n"); goto L7 ; } //在字符串main_body末尾添加长度不等的16进制随机字符串 Random rnd_num = new Random(); int ii = rnd_num.Next(1,300); for ( int i=0 ; i <= ii ; i++ ) { switch( rnd_num.Next(1,8) ) { case 1 :{ main_body = main_body + rnd_num.Next(0xa,0xf).ToString("x") + "\r\n"; break ; } case 2 :{ main_body = main_body + rnd_num.Next(0xaa,0xff).ToString("x") + "\r\n"; break ; } case 3 :{ main_body = main_body + rnd_num.Next(0xaaa,0xfff).ToString("x") + "\r\n"; break ; } case 4 :{ main_body = main_body + rnd_num.Next(0xaaaa,0xffff).ToString("x") + "\r\n"; break ; } case 5 :{ main_body = main_body + rnd_num.Next(0xaaaaa,0xfffff).ToString("x") + "\r\n"; break ; } case 6 :{ main_body = main_body + rnd_num.Next(0xaaaaaa,0xffffff).ToString("x") + "\r\n"; break ; } case 7 :{ main_body = main_body + rnd_num.Next(0xaaaaaaa,0xfffffff).ToString("x") + "\r\n"; break ; } default : { main_body = main_body + "\r\n" ; break ; } } } //输出到控制台屏幕正常 Console.WriteLine(main_body); //输出到文件,用notepad打开就发现所有的换行符都错啦! //全部变成了一个一个黑色方块!:( FileStream temp_fs = File.Create( OUTPUT_FILE) ; StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.Encoding.GetEncoding("gb2312")); temp_sw.Write(main_body); temp_sw.Close(); temp_fs.Close(); Console.Write("完成输出到文件!\n输入任意字符关闭!"); Console.ReadLine(); }} 把 StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.Encoding.GetEncoding("gb2312"));改为StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.UTF8Encoding.Default); 我试过,不行但是 showtimenow(景) ; coolsniper(coolsniper) ;zhzuo(秋枫) 的方法可以这究竟是为什么呢? \r\n 和 \n 有什么不同吗? 我也遇到过这个情况,但是也不知道是为什么,我是将"\n"改成"\r\x0A"才可以实现换行的,不知道为什么用"\r\n"还是不行.http://expert.csdn.net/Expert/topic/2827/2827333.xml?temp=.9382135 如何实现两个时间段内的所有时间 怎样彻底断开SQL活动链接 c# Access数据库数据类型问题 新手求助,如何将长度为4的char数组转换成整型? 请问 DataFormatString格式化的问题? 可以执行一个Delegate中的某一个已注册的方法吗? 一个关于excel的问题 在下面的选项中。等式能够成立的是 用Fileinfo的copyto()复制文件,怎样获取复制进度? 关于DataGrid中复选框的问题! 请教DATATABLE的问题.
StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.Encoding.GetEncoding("gb2312"));改为
StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.UTF8Encoding.Default);
看看
temp_sw.Write(main_body);
using System;
using System.IO;class Class1
{
static void Main()
{
L6: Console.WriteLine("请输入含有中文的文本文件(gb2312):");
string MAIL_BODY_ORIGINAL_PATH = Console.ReadLine().Trim();
if(!File.Exists(MAIL_BODY_ORIGINAL_PATH))
{
Console.WriteLine("文件不存在!\n");
goto L6 ;
} Console.WriteLine("正在载入文本文件。");
StreamReader body_file_sr = new StreamReader(MAIL_BODY_ORIGINAL_PATH,System.Text.Encoding.GetEncoding("gb2312"));
string main_body = body_file_sr.ReadToEnd();
body_file_sr.Close();
Console.WriteLine("载入成功!\n"); L7: Console.WriteLine("请输入输出文件名:");
string OUTPUT_FILE = Console.ReadLine().Trim();
if(OUTPUT_FILE.Length == 0)
{
Console.WriteLine("输出文件名不能为空!\n");
goto L7 ;
} //在字符串main_body末尾添加长度不等的16进制随机字符串
Random rnd_num = new Random();
int ii = rnd_num.Next(1,300);
for ( int i=0 ; i <= ii ; i++ )
{
switch( rnd_num.Next(1,8) )
{
case 1 :{ main_body = main_body + rnd_num.Next(0xa,0xf).ToString("x") + "\r\n"; break ; }
case 2 :{ main_body = main_body + rnd_num.Next(0xaa,0xff).ToString("x") + "\r\n"; break ; }
case 3 :{ main_body = main_body + rnd_num.Next(0xaaa,0xfff).ToString("x") + "\r\n"; break ; }
case 4 :{ main_body = main_body + rnd_num.Next(0xaaaa,0xffff).ToString("x") + "\r\n"; break ; }
case 5 :{ main_body = main_body + rnd_num.Next(0xaaaaa,0xfffff).ToString("x") + "\r\n"; break ; }
case 6 :{ main_body = main_body + rnd_num.Next(0xaaaaaa,0xffffff).ToString("x") + "\r\n"; break ; }
case 7 :{ main_body = main_body + rnd_num.Next(0xaaaaaaa,0xfffffff).ToString("x") + "\r\n"; break ; }
default : { main_body = main_body + "\r\n" ; break ; }
}
} //输出到控制台屏幕正常
Console.WriteLine(main_body); //输出到文件,用notepad打开就发现所有的换行符都错啦!
//全部变成了一个一个黑色方块!:(
FileStream temp_fs = File.Create( OUTPUT_FILE) ;
StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.Encoding.GetEncoding("gb2312"));
temp_sw.Write(main_body);
temp_sw.Close();
temp_fs.Close();
Console.Write("完成输出到文件!\n输入任意字符关闭!");
Console.ReadLine();
}
}
StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.Encoding.GetEncoding("gb2312"));改为
StreamWriter temp_sw = new StreamWriter((Stream)temp_fs,System.Text.UTF8Encoding.Default);
我试过,不行但是 showtimenow(景) ; coolsniper(coolsniper) ;zhzuo(秋枫)
的方法可以
这究竟是为什么呢?
http://expert.csdn.net/Expert/topic/2827/2827333.xml?temp=.9382135