如何更改HtmlWeb编码

时间:2012-04-01 02:37:35

标签: c# windows-phone-7 html-agility-pack

我正在尝试使用htmlagilitypack为windows phone应用程序加载网页,问题是编码是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 :(得分:0)

我认为这里最简单的方法是不使用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);

答案 1 :(得分:0)

Autodetectencoding已添加到其中一个最新版本中,可能在您添加到项目中的版本中不可用。 Version 1.4.0 has this property

另见: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b2733aa5-99dc-4bcc-a3b8-ea0754f494e0/