HtmlAgilityPack - Как установить пользовательскую кодировку при загрузке страниц - PullRequest
0 голосов
/ 25 октября 2011

Можно ли установить пользовательскую кодировку при загрузке страниц описанным ниже способом?

HtmlWeb hwWeb = new HtmlWeb();
HtmlDocument hd = hwWeb.load("myurl");

Я хочу установить кодировку "iso-8859-9".

Я использую C # 4.0 и WPF.

Редактировать: На MSDN был дан ответ .

Ответы [ 3 ]

4 голосов
/ 25 октября 2011

Полагаю, вы можете попробовать переопределить кодировку в объекте HtmlWeb.

Попробуйте это:

var web = new HtmlWeb
{
    AutoDetectEncoding = false,
    OverrideEncoding = myEncoding,
};
var doc = web.Load(myUrl);

Примечание. Похоже, что свойство OverrideEncoding было добавлено в пакет гибкости HTML в редакции 76610, поэтому оно недоступно в текущем выпуске v1.4 (66017). Следующее, что лучше всего сделать, это прочитать страницу вручную с переопределенными кодировками.

3 голосов
/ 02 октября 2012
var document = new HtmlDocument();

using (var client = new WebClient())
{
    using (var stream = client.OpenRead(url))
    {
        var reader = new StreamReader(stream, Encoding.GetEncoding("iso-8859-9"));
        var html = reader.ReadToEnd();
        document.LoadHtml(html);
    }
}

Это простая версия решения с ответом здесь (по некоторым причинам оно было удалено)

0 голосов
/ 16 декабря 2013

Приличный ответ здесь, который обрабатывает автоопределение кодировки, а также некоторые другие изящные функции:

C # и проблема кодирования HtmlAgilityPack

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...