起因:
做项目的时候,需要根据条件数据生成静态的Html,下面是生成静态的Html
/// <summary> /// 生成静态Html /// </summary> /// <param name="strHtml">html</param> /// <param name="path">网页保存路径</param> /// <param name="pageName">网页名称</param> /// <param name="success">生成状态</param> private void GenerateHtml(string strHtml,string path,string pageName,out bool success) { string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; //项目根目录 try { FileStream fs = new FileStream((baseDirectory + "/" + path + "/" + pageName), FileMode.Create); StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("UTF_8")); //输出的网页编码格式为UTF-8 BOM sw.Write(strHtml); //写入Html sw.Close(); //关闭流 fs.Close(); success = true; } catch(IOException ex) { success = false; } }
生成的Html在单文件使用的情况下没有问题,但是通过【文件引入】就会出现乱码的情况
会出现【】这样的乱码,会在页面中多出一处空白行,从而影响到页面的布局。
在网上找了很多的资料得到的信息如下:
1、Visual Studio 默认生成文件的编码格式为UTF-8 BOM 【byte order mark】也就是字节序标记
显然,现在要解决的问题是UTF-8和UTF-8 BOM编码之间的转换
以下是不提供BOM的编码
Encoding utf8NoBom = new UTF8Encoding(false); Encoding utf16NoBom = new UnicodeEncoding(false, false); Encoding utf32NoBom = new UTF32Encoding(false, false);
所以把上面的编码格式做下修改,生成的静态页面的编码格式就是UTF-8
/// <summary> /// 生成静态Html /// </summary> /// <param name="strHtml">html</param> /// <param name="path">网页保存路径</param> /// <param name="pageName">网页名称</param> /// <param name="success">生成状态</param> private void GenerateHtml(string strHtml,string path,string pageName,out bool success) { string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; //项目根目录 try { FileStream fs = new FileStream((baseDirectory + "/" + path + "/" + pageName), FileMode.Create); Encoding utf8NoBom = new UTF8Encoding(false); //参数是否提供一个Unicode字节顺序标记 StreamWriter sw = new StreamWriter(fs, utf8NoBom); //输出的网页编码格式为UTF-8 BOM sw.Write(strHtml); //写入Html sw.Close(); //关闭流 fs.Close(); success = true; } catch(IOException ex) { success = false; } }
现在生成的静态页面就是UTF-8的编码格式了。
转载于:https://www.cnblogs.com/zhanghonjiang2011/archive/2012/06/20/2556374.html