HtmlAgilityPack - Come impostare la codifica personalizzata quando si caricano le pagine

c# encoding html-agility-pack load wpf

Domanda

È possibile impostare la codifica personalizzata quando si caricano le pagine con il metodo seguente?

HtmlWeb hwWeb = new HtmlWeb();
HtmlDocument hd = hwWeb.load("myurl");

Voglio impostare la codifica su "iso-8859-9".

Io uso C # 4.0 e WPF.

Modifica: la domanda ha avuto risposta su MSDN.

Risposta accettata

Suppongo che potresti provare a sovrascrivere la codifica nell'oggetto HtmlWeb .

Prova questo:

var web = new HtmlWeb
{
    AutoDetectEncoding = false,
    OverrideEncoding = myEncoding,
};
var doc = web.Load(myUrl);

Nota: sembra che la proprietà OverrideEncoding stata aggiunta al pacchetto agility HTML nella revisione 76610, quindi non è disponibile nella versione corrente v1.4 (66017). La prossima cosa migliore da fare sarebbe quella di leggere la pagina manualmente con le codifiche sovrascritte.


Risposta popolare

var document = new HtmlDocument();

using (var client = new WebClient())
{
    using (var stream = client.OpenRead(url))
    {
        var reader = new StreamReader(stream, Encoding.GetEncoding("iso-8859-9"));
        var html = reader.ReadToEnd();
        document.LoadHtml(html);
    }
}

Questa è una versione semplice della soluzione qui risolta (per alcuni motivi è stata cancellata)



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é