Problema di codifica C # e HtmlAgilityPack

c# encoding html-agility-pack

Domanda

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

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

Quindi questo codice restituisce: "Skaitytojo klausimas psicologui: kas lemia homoseksualumÃ" â € |? - Naujienà ... ³ portalas Alfa.lt "invece di" Skaitytojo klausimas psicologui: kas lemia homoseksualumÄ ...? - Naujienų portalas Alfa.lt ".

Questa pagina web è codificata in 1257 (baltico), ma textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; restituisce il testo distorto - i diacritici baltici si trasformano in alcuni strani stringhe di caratteri diversi :(

E sì, ho provato i forum HtmlAgilityPack. Fanno schifo.

PS Non sono programmatore, ma lavoro su un progetto di comunità e ho davvero bisogno di far funzionare questo codice. Grazie ;}

Risposta accettata

In realtà la pagina è codificata con UTF-8.

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

funzionerà.

Oppure puoi usare il codice nella mia risposta SO che rileva la codifica da intestazioni o meta tag http, en re-codifica correttamente. (Supporta anche gzip per minimizzare il download).

Con la classe di download il tuo codice sarà simile a:

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

Risposta popolare

Ho avuto problemi di codifica simili. L'ho risolto, nella versione più recente di HtmlAgilityPack, aggiungendo quanto segue all'inizializzazione di WebClient.

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché