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编码问题