有时我们需要将选定页面的内容保存到指定的文件,一下的代码可以实现,而且可以根据自己的设定,确定采用什么字符集保存。
HttpWebRequest myReq=(HttpWebRequest)WebRequest.Create( "http://www.zhaizl.com ");
HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
StreamReader respStream = new StreamReader(myResp.GetResponseStream(), Encoding.GetEncoding(936));
string respStr = respStream.ReadToEnd();
respStream.Close();
//TextWriter myWriter=File.CreateText(@ "D:\temp\test.htm ");
FileStream stream = new FileStream(@ "D:\temp\test.htm ",FileMode.OpenOrCreate);
StreamWriter myWriter = new StreamWriter(stream, Encoding.GetEncoding(936));
myWriter.Write(respStr);
myWriter.Flush();
myWriter.Close();
注:其中Encoding.GetEncoding(936)中的936为简体中文(即GB3212)的代码页。
因为其中有中文,所以不能保存成ASCII。
默认的情况下TextWriter保存的是UTF-8,所以用你的程序保存的html页也是UTT-8的编码。
而在网页的开头指示的确是GB3212,所以IE在打开这个页是就使用了GB2312,出现乱码。如果你在浏览器的编码改为UTF-8,或者修改你保持的网页的开头的编码为UTF-8,就能得到正确的网页。