WebClient GodLikeClient = new WebClient();
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument();
GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt");
所以这段代码返回:“Skaitytojo klausimas psichologui:kaslemiahomoseksualumÔ - ? - NaujienÃ...³³portalasAlfa.lt“而不是”Skaitytojo klausimas psichologui:kaslemiaomomoseksualumÄ...? - NaujienųportalasAlfa.lt“。
这个网页编码在1257(波罗的海),但textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml;
返回扭曲的文本 - 波罗的海变音符被转换成一些奇怪的几个字符长字符串:(
是的,我已经尝试过HtmlAgilityPack论坛了。他们很糟糕。
PS我不是程序员,但我在社区项目上工作,我真的需要让这段代码工作。谢谢 ;}
实际上页面是用UTF-8编码的。
GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);
将工作。
或者您可以使用我的SO答案中的代码来检测来自http标头或元标记的编码,并正确地重新编码。 (它还支持gzip以最小化您的下载)。
使用下载类,您的代码将如下所示:
HttpDownloader downloader = new HttpDownloader("http://www.alfa.lt",null,null);
GodLikeHTML.LoadHtml(downloader.GetPage());
我有类似的编码问题。我通过在我的WebClient初始化中添加以下内容,在最新版本的HtmlAgilityPack中修复它。
var htmlWeb = new HtmlWeb();
htmlWeb.OverrideEncoding = Encoding.UTF8;
var doc = htmlWeb.Load("www.alfa.lt");