动态页面静态化后的字符问题
我写了一个基类
- C# code
public class BasePage:System.Web.UI.Page{ public BasePage() { // // TODO: 在此处添加构造函数逻辑 // } protected override void Render(System.Web.UI.HtmlTextWriter writer) { string name = Request.Url.AbsolutePath.Substring(1, Request.Url.AbsolutePath.Length - 1).Replace("aspx", "htm"); string newurl = ""; int num1 = name.LastIndexOf('/')+1; int num2 = name.Length-num1; string name1 = name.Substring(num1, num2); if (name1.IndexOf("/") < 0) { //newurl = Server.MapPath(name); //newurl = "/AssetWeb/"+name; newurl = Server.MapPath("./") + name1; } else { newurl = Server.MapPath("./") + name1; } MemoryStream ms = new MemoryStream(); StreamWriter sww = new StreamWriter(ms); StreamWriter swr = new StreamWriter(newurl); System.Web.UI.HtmlTextWriter htmlw = new HtmlTextWriter(swr); base.Render(htmlw); htmlw.Flush(); htmlw.Close(); string strLL = System.Text.Encoding.UTF32.GetString(ms.ToArray()); Response.Write(strLL); Response.Redirect(Request.Url.AbsoluteUri.Replace("aspx", "htm"), true); } }但是页面显示后都是乱码,包括服务器控件也是,想请教下有什么解决的办法?
[解决办法]
System.Text.Encoding.UTF32
改成System.Text.Encoding.Default试试
[解决办法]
楼主你的动态页面静态化是啥子意思来着呢.
我看你的思路好像不太对,你仅把扩展名aspx替换个htm没啥用喔??
你在服务器端生成html了吗?怎样生成的呢?生成了直接访问htm就行了....
你先打开生成的html有没有乱码,如果有就是生成的问题....
[解决办法]
==========================贴下我的代码==========================
string BoardStream = " ";//下载内容存入此变量
Uri url = new Uri( "http://www.hpday.com ");//将下载地址转换为Uri类型
HttpWebRequest requestPage = (HttpWebRequest)WebRequest.Create(url);
WebResponse response = requestPage.GetResponse();
Stream stream = response.GetResponseStream();//获取页面流
if (response.ContentType.ToLower().StartsWith( "text/ "))//如果获得成功(即为文本格式)
{
StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding( "gb2312 "));//读取获得内容流 gb2312
//StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);//读取获得内容流 utf8格式
BoardStream = reader.ReadToEnd();//将内容流转换为文本并存入变量BoardStream,即为所需要的数据流
}
StreamWriter saveAPage = new StreamWriter(Server.MapPath( "a.htm "), false, System.Text.Encoding.UTF8);//实例化写入类
saveAPage.Write(BoardStream);//创建写入任务
saveAPage.Flush();//写入文件(即清理缓存流)
saveAPage.Close();//关闭写入类的对象