C#按原样将html页面下载到字符串中

本文关键字:下载 字符串 按原样 html | 更新日期: 2023-09-27 18:24:18

为什么WebClient或HttpWebResponse/Request的编码与我在浏览器中查找页面源代码时不同?另外,如果他们找不到合适的编码,他们会给我显示奇怪的符号。例如:当我尝试下载-http://www.li.ru-在页面源中是utf-8,在WebClient或HttpWebResponse/Request中是windows-1251。

如有任何帮助,我们将不胜感激。

C#按原样将html页面下载到字符串中

您只需要在请求的网页上强制编码相同即可。

使用WebClient,您可以执行以下操作:

using(WebClient webClient = new WebClient())
{
    webClient.Encoding = Encoding.UTF8;
    string s = webClient.DownloadString("http://wwww.li.ru");
}

使用HttpWebResponse/Request:

HttpWebRequest webRequest = HttpWebRequest.CreateHttp("http://www.li.ru");
using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
{
    using (Stream resStream = response.GetResponseStream())
    {
        StreamReader reader = new StreamReader(resStream, Encoding.UTF8);
        return reader.ReadToEnd();
    }
}

编辑:

只需将固定编码扩展到以下代码:

var enc = Encoding.Default;
if (!string.IsNullOrEmpty(response.CharacterSet))
{
    var charSet = response.CharacterSet;
    if (charSet == "ISO-8859-1")
        charSet = "windows-1251";
    enc = Encoding.GetEncoding(charSet);
}
StreamReader reader = new StreamReader(resStream, enc);
return reader.ReadToEnd();

如需进一步解释,您可以查看此页面:http://blogs.msdn.com/b/feroze_daud/archive/2004/03/30/104440.aspx