C # - und HtmlAgilityPack-Codierungsproblem

c# encoding html-agility-pack

Frage

WebClient GodLikeClient = new WebClient();
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument();

GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt");

Also kommt dieser Code zurück: "Skaitytojo klausimas psichologui: kas lemia homoseksualumÃ" â € |? - Naujienâ € | portalas Alfa.lt "statt" Skaitytojo klausimas psichologui: kas lemia homoseksualumà ...? - Naujienų portalas Alfa.lt ".

Diese Webseite ist in 1257 (baltisch) kodiert, aber textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; gibt den verzerrten Text zurück - baltische Diakritika werden in seltsame, mehrere Zeichen lange Strings umgewandelt :(

Und ja, ich habe die HtmlAgilityPack-Foren ausprobiert. Sie saugen.

PS Ich bin kein Programmierer, aber ich arbeite an einem Community-Projekt und ich muss diesen Code wirklich funktionieren lassen. Vielen Dank ;}

Akzeptierte Antwort

Tatsächlich ist die Seite mit UTF-8 codiert.

GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);

wird funktionieren.

Oder Sie könnten den Code in meiner SO-Antwort verwenden, der die Kodierung von http-Headern oder Meta-Tags erkennt und diese korrekt neu codiert. (Es unterstützt auch gzip, um den Download zu minimieren).

Mit der Download-Klasse würde Ihr Code wie folgt aussehen:

HttpDownloader downloader = new HttpDownloader("http://www.alfa.lt",null,null);
GodLikeHTML.LoadHtml(downloader.GetPage());

Beliebte Antwort

Ich hatte ähnliche Codierungsprobleme. Ich habe es in der aktuellsten Version von HtmlAgilityPack korrigiert, indem ich zu meiner WebClient-Initialisierung folgendes hinzugefügt habe.

var htmlWeb = new HtmlWeb();
htmlWeb.OverrideEncoding = Encoding.UTF8;
var doc = htmlWeb.Load("www.alfa.lt");


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum