2010-08-10 21 views
18
WebClient GodLikeClient = new WebClient(); 
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument(); 

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

lo que este código devuelve " 'preguntas psicólogo: las causas de la homosexualidad ... - Naujienų portal de Alfa.lt? En lugar de" lectores de los lectores"preguntas psicólogo: lo que causa la homosexualidad - Portal de Noticias Alfa.lt? "C# y HtmlAgilityPack codificación problema

Esta página web está codificada en 1257 (Báltico), pero devuelve el texto textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; distorsionada -. Diacríticos Báltico se transforman en algunos caracteres extraños varias cadenas largas :(

Y sí, he probado el foro HtmlAgilityPack Ellos no aspirar

PS no soy un programador, pero trabajo en un proyecto de la comunidad y realmente necesito para obtener el código de trabajo Gracias;..}

Respuesta

21
En realidad

la página está codificado con UTF-8.

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

va a funcionar.

O puede utilizar el código en mi SO answer que detectan la codificación de las cabeceras HTTP o etiquetas meta, es correctamente volver a codificar. (También es compatible con gzip para minimizar la descarga).

Con la clase descargar su código se vería así:

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

Sí, eso 'aumentar el trabajo: D Wow, muy sencillo, no lo es. Gracias! – August

+2

muchas gracias, llegaron a los personajes locos como o lo que sea, ahora se está trabajando muy bien –

+0

DEHELL es GodLikeHTML? Es este un sinónimo o realidad Busco a una clase con esa casa? – helmesjo

1

que intenta cambiar el GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt"), Encoding.GetEncoding(1257));

+0

Lo siento, he Misguided usted - que fue codificado en UTF. Gracias por su ayuda, aunque. – August

6
HtmlAgilityPack.HtmlDocument doc = new HtmlDocument(); 
StreamReader reader = new StreamReader(WebRequest.Create(YourUrl).GetResponse().GetResponseStream(), Encoding.Default); //put your encoding    
doc.Load(reader); 

espero que ayude :)

11

Yo tenía un similares problemas de codificación. Me fijo que, en la versión más actualizada de HtmlAgilityPack, añadiendo següents a mi cliente Web de inicialización.

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

La mejor respuesta (por qué usar webclient cuando puede hacerlo solo usando HTMLAgilityPack – a1204773

1

UTF8 no funcionó para mí, pero después de la configuración de codificación de este tipo, la mayoría de las páginas que estaba tratando simplemente salir trabajó wel:

web.OverrideEncoding = Encoding.GetEncoding (ISO-8859 -1 ");

Tal vez podría ayudar a alguien.

0

Esta es mi solución

HttpWebRequest request =(HttpWebRequest)WebRequest.Create("http://www.sina.com.cn"); 
HttpWebResponse response =(HttpWebResponse)request.GetResponse(); 
long len = response.ContentLength; 
byte[] barr = new byte[len]; 
response.GetResponseStream().Read(barr, 0, (int)len); 
response.Close(); 
string data = Encoding.UTF8.GetString(barr); 
var encod = doc.DetectEncodingHtml(data); 
string convstr = Encoding.Unicode.GetString(Encoding.Convert(encod, Encoding.Unicode, barr)); 
doc.LoadHtml(convstr); 
0

si todos esos post no funciona, sólo tiene que utilizar esto: WebUtility.HtmlDecode("Your html text");