Problema de codificación de C # y HtmlAgilityPack

c# encoding html-agility-pack

Pregunta

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

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

Entonces, este código devuelve: "Skaitytojo klausimas psichologui: kas lemia homoseksualumÄ â € ¦? - Naujienà ... ³ portalas Alfa.lt "en lugar de" Skaitytojo klausimas psichologui: kas lemia homoseksualumÄ ...?

Esta página web está codificada en 1257 (Báltico), pero textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; devuelve el texto distorsionado: los diacríticos del Báltico se transforman en algunas cadenas extrañas de varios caracteres extraños :(

Y sí, he probado los foros HtmlAgilityPack. Ellos chupan.

PS No soy programador, pero trabajo en un proyecto comunitario y realmente necesito hacer que este código funcione. Gracias ;}

Respuesta aceptada

En realidad la página está codificada con UTF-8.

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

trabajará.

O puede utilizar el código en mi respuesta SO que detecta la codificación de los encabezados http o las metaetiquetas, y la recodifica correctamente. (También soporta gzip para minimizar su descarga).

Con la clase de descarga, su código se vería así:

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

Respuesta popular

Tuve un problema de codificación similar. Lo arreglé, en la versión más actual de HtmlAgilityPack, agregando lo siguiente a mi inicialización de WebClient.

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


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué