Problème d'encodage C # et HtmlAgilityPack

c# encoding html-agility-pack

Question

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

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

Donc ce code retourne: "Skaitytojo klausimas psichologui: kas lemia homoseksualum ™? - Naujienâ³³ portalas Alfa.lt" au lieu de "Skaitytojo klausimas psichologui: kas lemia homoseksualumÄ ...?

Cette page Web est codée en 1257 (baltique), mais textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; renvoie le texte déformé - les signes diacritiques de la Baltique se transforment en chaînes étranges composées de plusieurs caractères:

Et oui, j'ai essayé les forums HtmlAgilityPack. Ils sucent.

PS Je ne suis pas un programmeur, mais je travaille sur un projet communautaire et j'ai vraiment besoin que ce code fonctionne. Merci ;}

Réponse acceptée

En réalité, la page est codée avec UTF-8.

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

marchera.

Ou vous pouvez utiliser le code de ma réponse au responsable de la sécurité qui détecte le codage à partir d’en-têtes http ou de balises méta, puis ré-code correctement. (Il prend également en charge gzip pour minimiser votre téléchargement).

Avec la classe de téléchargement, votre code ressemblerait à ceci:

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

Réponse populaire

J'ai eu un problème d'encodage similaire. Je l'ai corrigé, dans la version la plus récente de HtmlAgilityPack, en ajoutant ce qui suit à mon initialisation WebClient

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi