Aug*_*ust 23 c# encoding html-agility-pack
WebClient GodLikeClient = new WebClient();
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument();
GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt");
Run Code Online (Sandbox Code Playgroud)
所以这段代码返回:"Skaitytojo klausimas psichologui:kaslemiahomoseksualumÄ...? - NaujienųportalasAlfa.lt"而不是"Skaitytojo klausimas psichologui:kaslemiahomoseksualumą? - NaujienųportalasAlfa.lt".
这个网页编码在1257(波罗的海),但textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml;返回扭曲的文本 - 波罗的海变音符被转换成一些奇怪的几个字符长字符串:(
是的,我已经尝试过HtmlAgilityPack论坛了.他们很糟糕.
PS我不是程序员,但是我在社区项目上工作,我真的需要让这段代码工作.谢谢 ;}
Mik*_*son 25
实际上页面是用UTF-8编码的.
GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
将工作.
或者您可以使用我的SO答案中的代码来检测来自http标头或元标记的编码,并正确地重新编码.(它还支持gzip以最小化您的下载).
使用下载类,您的代码将如下所示:
HttpDownloader downloader = new HttpDownloader("http://www.alfa.lt",null,null);
GodLikeHTML.LoadHtml(downloader.GetPage());
Run Code Online (Sandbox Code Playgroud)
cra*_*tad 12
我有类似的编码问题.我通过在WebClient初始化中添加以下内容,在最新版本的HtmlAgilityPack中修复它.
var htmlWeb = new HtmlWeb();
htmlWeb.OverrideEncoding = Encoding.UTF8;
var doc = htmlWeb.Load("www.alfa.lt");
Run Code Online (Sandbox Code Playgroud)
HtmlAgilityPack.HtmlDocument doc = new HtmlDocument();
StreamReader reader = new StreamReader(WebRequest.Create(YourUrl).GetResponse().GetResponseStream(), Encoding.Default); //put your encoding
doc.Load(reader);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 :)
UTF8对我不起作用,但是在设置了这样的编码后,我尝试抓取的大多数页面仅能正常工作:
web.OverrideEncoding = Encoding.GetEncoding(“ ISO-8859-1”);
也许它可以帮助某人。