Как скачать HTML-страницы с правильной кодировкой, используя C #? - PullRequest
2 голосов
/ 24 февраля 2011

Мне нужен метод, который получает ссылку на страницу и возвращает заголовок этой страницы.

Я использовал WebClient -

        var webClient = new WebClient();
        var htmlString = webClient.DownloadString(_link);

Хорошо работает, но не работает с кодировкой иностранных языков. Я получаю знаки вопроса и странные символы вместо нужного мне текста.

Существует ли универсальный способ определения кодировки страницы и ее использования? Мне нужно, чтобы он поддерживал большинство кодировок, если не все.

Ответы [ 2 ]

10 голосов
/ 24 февраля 2011

Используя HtmlAgilityPack , вы можете сделать что-то вроде этого

using (WebClient client = new WebClient())
using (var read = client.OpenRead("http://your.com"))
{
    HtmlDocument doc = new HtmlDocument();
    doc.Load(read, true); // true = get encoding from byte order masks
    // process doc, extract title
    var title = doc.DocumentNode.SelectSingleNode("//title").InnerText;
}
0 голосов
/ 24 февраля 2011
using System;
using System.IO;
using System.Net;
using System.Text;

...

    public static void GetFile
            (
            string strURL,
            string strFilePath
            )
        {

            WebRequest myWebRequest = WebRequest.Create(strURL); 

            WebResponse myWebResponse = myWebRequest.GetResponse(); 

            Stream ReceiveStream = myWebResponse.GetResponseStream();

            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

            StreamReader readStream = new StreamReader( ReceiveStream, encode );

            string strResponse=readStream.ReadToEnd();

            StreamWriter oSw=new StreamWriter(strFilePath);

            oSw.WriteLine(strResponse);

            oSw.Close();

            readStream.Close();

            myWebResponse.Close();

        }
...