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

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

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

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

我使用C#4.0和WPF。

编辑: 问题已在MSDN上得到解答。

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

试试这个:

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

注意: OverrideEncoding属性似乎已添加到版本76610中的HTML agility pack中,因此在当前版本v1.4(66017)中不可用。 接下来要做的最好的事情是手动读取页面并覆盖编码。

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

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

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

C#和HtmlAgilityPack编码问题