SHTML文件(include)包含出现空行的处理办法
发布时间: 2013年1月11日页面静态化,为了维护方便会包含一些通用的文件,如页面上有一些是公用嵌套页如hot.xml,bottom.htm等,在使用shtml的include方法时会碰到一个问题:
包含一个静态页后发现页面上会出现一个空行,网上查资料后发现是因为utf-8的BOM头引起的,测试结果如下
head.inc编码为utf-8有bom时
.aspx页面没有任何问题
.shtml页面在引用的地方会出现一个空行
head.inc编码为utf-8无bom时
.aspx页面页面出现乱码
.shtml页面没有任何问题
创建无bom的utf8编码文件方法,解决include空白行问题(aspx默认创建的文件都是utf-8+bom的,在include的时候顶部会出现空白行),解决问题后总结如下:
1、如果你的页面不经常变化,可以用DW把页面另存为utf-8去除dom的方式。如果你的页面是动态页生成的静态页,那这种人工维护的方式就累了。
2、动态页生成静态页出现空行的解决方法:
/// 解决include空白行问题
/// 要抓取的动态页面路径,如:http://www.moppop.com/news.aspx?id=1
/// 要生成的新文件名,如:news.html
public void NewsCteateUtf8_NoBom(string strurl, string path) {
StreamReader sr;
StreamWriter sw;
WebRequest HttpWebRequest = WebRequest.Create(strurl);
WebResponse HttpWebResponse = HttpWebRequest.GetResponse();
sr = new StreamReader(HttpWebResponse.GetResponseStream(), System.Text.Encoding.Default);
string strHtml = sr.ReadToEnd();
strurl = strurl.Substring(strurl.LastIndexOf("/") + 1);
strurl = strurl.Replace(".aspx", ".html");
string savefile = xmlprovider.ReadSettingsStr("E://CreatHtml/path.xml", "filepath", "newsavepath") + path + strurl;
UTF8Encoding utf8 = new UTF8Encoding(false);
sw = new StreamWriter(savefile, false, utf8);
sw.WriteLine(strHtml);
sw.Flush();
sw.Close();
}
以上是我封装好的方法,只需传入读取的动态页面路径和要生成的新文件名,就可以自动处理了。因为生成的文件多,以上物理路径路径我全部放在了xml进行配置,这样维护方便。
- 相关文章:
Application,Session,Cookie,ViewState和Cache等对象保存信息的区别 (2011-10-7 12:10:31)
asp.net开源项目学习网站大全(收藏) (2011-3-13 23:1:22)
VS2008常用快捷键 (2011-3-13 21:10:20)
C#将多个连续的空格替换成一个空格 (2011-3-11 23:12:26)
自己写的net程序实现sql数据库导入excel (2011-1-12 0:2:46)
针对 Java 开发人员的 C# 编程语言 (2011-1-11 23:57:19)
.NET 的商业价值 (2011-1-11 23:42:3)
C# 语言小常识 (2011-1-11 23:30:43)
关于"未能加载文件或程序集"解决方法 (2010-8-2 23:13:41)




