как изменить кодировку HtmlWeb - PullRequest
1 голос
/ 01 апреля 2012

Я пытаюсь загрузить веб-страницу для приложения Windows Phone с помощью htmlagilitypack, проблема в том, что кодировка iso-8859-7, а класс htmlWeb загружает страницу как utf.Я пытаюсь решить эту проблему с помощью следующего кода:

 public auditPage()
        {
            InitializeComponent();
            HtmlWeb hwWeb = new HtmlWeb();
            hwWeb = new HtmlWeb
            {
                AutoDetectEncoding = false,
                OverrideEncoding = Encoding.GetEncoding("iso-8859-7"),
            };
           HtmlWeb.LoadAsync("url", HtmlWeb_load);
        }

Но я получаю следующие ошибки: «HtmlAgilityPack.HtmlWeb» не содержит определения для «OverrideEncoding» «HtmlAgilityPack.HtmlWeb» не содержит определениядля 'AutoDetectEncoding'.Что я могу сделать, чтобы правильно кодировать HTML-страницу?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Autodetectencoding был добавлен в одну из последних версий и, возможно, недоступен в версии, которую вы добавили в проект. Версия 1.4.0 имеет это свойство .

Смотрите также: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b2733aa5-99dc-4bcc-a3b8-ea0754f494e0/

0 голосов
/ 01 апреля 2012

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

Но вы можете сделать это вручную, например, используя WebClient.OpenReadAsync, а затем метод HtmlDocument.Load, который принимает кодирование потока в качестве второготакой параметр:

var client = new WebClient();
client.OpenReadCompleted += (sender, e) =>
{
    doc.Load(e.Result, Encoding.GetEncoding("iso-8859-7"));
    e.Result.Close();
};
client.OpenReadAsync(url);
...