HtmlAgilityPack - 如何在加载页面时设置自定义编码

时间:2011-10-25 01:18:34

标签: c# wpf encoding load html-agility-pack

使用以下方法加载页面时是否可以设置自定义编码?

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

我想将编码设置为“iso-8859-9”。

我使用C#4.0和WPF。

编辑:The question已在MSDN上得到解答。

3 个答案:

答案 0 :(得分:4)

我想您可以尝试覆盖HtmlWeb对象中的编码。

试试这个:

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

注意:OverrideEncoding属性似乎已添加到修订版76610中的HTML敏捷包中,因此在当前版本v1.4(66017)中不可用。接下来最好的办法是手动阅读页面并覆盖编码。

答案 1 :(得分:3)

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);
    }
}

这是解决方案的简单版本 here (由于某些原因它被删除了)

答案 2 :(得分:0)

这里有一个不错的答案,可以处理自动检测编码以及其他一些漂亮的功能:

C# and HtmlAgilityPack encoding problem