簡體   English   中英

C#將html頁面下載為字符串嗎?

[英]C# Download html page to a string AS IS?

與在瀏覽器中查看頁面源時相比,為什么WebClient或HttpWebResponce / Request具有不同的編碼? 另外,如果他們找不到正確的編碼,則會顯示出奇怪的符號。 例如:當我嘗試下載-http: //www.li.ru-在頁面源代碼中是utf-8,從WebClient或HttpWebResponce / Request中是Windows-1251。

任何幫助,將不勝感激。

您只需要在請求的網頁上強制編碼相同即可。

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM