ASP.NET中StreamReader、FileStream、StreamWriter操作文件编码问题
2007-12-09 18:26
471 查看
最近做一个网站项目,要把文章信息页面生成静态页面,就是通过.NET中 StreamReader、FileStream、StreamWriter操作模板文件生成静态页面。到最后要与另一个系统合在一起,但2个系统编码不同,新做的系统的编码为UTF-8,生成静态页面也为UTF-8, 以前的系统为GB2312,要把新系统的头部文件包含的丢系统中,由于编码不同,会出现乱码,想了很多方法,尝试了很多次,最后终于找到解决方法了(在网上搜了很久,也没有找到,贡献给大家)。是不是很急了,:-),别急,顺便把.NET生成静态页面也写给大家,呵呵! 1、生成静态页面需要模板支持、例如模板代码如下: Template.html <html> <head><title>{$_Title}</title></head> <body> <div>{$_Content}</div> </body> </html> 其中{$_Title}和{$_Content}为要替换的内容。 2、首先要通过StreamReader类读取模板信息,代码如下 StreamReader sr = new StreamReader("Template.html", System.Text.Encoding.Default); // 读取模板文件信息,设置编码为默认编码,我测试很多次,这设置编码,于我们最后生成静态文件没有直接关系。 3、建立StreamBuilder对象(在多次操作字符串时,使用StreamBuilder是很有效率的。),代码如下 StreamBuilder sb = new StreamBuilder(sr.ReadToEnd()); // 读取模板信息所有文件, 记得要引入Text命名空间因为StreamBuilder 在Text中 sr.Close() ; // 关闭代码的流操作,并释放所占用的资源 ,一定要记得关闭呀。 4、这一步就是要把我们要替换的信息替换掉,一般情况下是查询数据库,把相应位置替换掉,这就简单一点了: sb.Replace("{$_Title}", ".NET生成静态页面编码问题"); // 替换Title sb.Replace("{$_Content}", "信息正文"); // 自己查询数据库替换,:-) 5、到上一步没有什么太大问题,编码转换主要是下面这一步了。 FileStream fs = new FileStream("Test.html", FileMode.Create); /* 其中Test.html是我们要生成的静态页面文件名称,FileMode.Create为若要生成的文件已经存在,覆盖掉。*/ StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("gb2312")); /* 这一步很重要,在这我们经常会省略编码,这也是输出文件的编码格式,是这篇文章的要点,就是Encoding.GetEncoding("gb2312"), 输出文件为GB2312编码,若是 Encoding.GetEncoding("utf-8") 输出文件为UTF-8 文件,这的介绍网上资料很少,希望能给大家帮助,呵呵。*/ sw.WriteLine(sb); // 输出信息。 sw.Close(); // 关闭数据流并释放所占资源 fs.Close(); // 关闭并释放资源, // 到此要结束了,大家可以测试一下。希望能给大家帮助,若有不足之处,请指导,谢谢! |
相关文章推荐
- ASP.NET中StreamReader、FileStream、StreamWriter操作文件编码问题
- ASP.NET中StreamReader、FileStream、StreamWriter操作文件编码问题
- FileStream读写文件 VS StreamWriter和StreamReader读写文件
- ASP.NET Core 2.0 本地文件操作问题及解决方案
- Asp.Net 之 StreamWriter文件操作 生成文件注意编码方式
- asp.net 文件编码问题
- asp.net文件下载过程遇到的问题(Stream.Position)
- 链接js文件编码问题[asp.net 2.0]
- asp.net 2.0中文件编码问题
- ASP.NET操作文件大全
- asp.net core 之静态文件目录的操作
- 【ASP.NET 问题】System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】错误解决
- Asp.net/c#+OleDb操作excel文件,基本操作 (一)
- Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters
- [导入]ASP.net里大文件上传的问题(转)
- Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)
- asp.net文件操作
- asp.net文件操作小例子(创建文件夹,读,写,删)
- asp.net 关于aspx前后台文件的五大问题
- ASP.NET上传大文件出现网页无法显示的问题