HtmlAgilityPack - Comment définir un encodage personnalisé lors du chargement de pages

c# encoding html-agility-pack load wpf

Question

Est-il possible de définir un encodage personnalisé lors du chargement de pages avec la méthode ci-dessous?

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

Je souhaite définir le codage sur "iso-8859-9".

J'utilise C # 4.0 et WPF.

Edit: La question a été répondue sur MSDN.

Réponse acceptée

Je suppose que vous pourriez essayer de remplacer l'encodage dans l'objet HtmlWeb .

Essaye ça:

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

Remarque: il semble que la propriété OverrideEncoding été ajoutée au pack d'agilité HTML dans la révision 76610, de sorte qu'elle n'est pas disponible dans la version actuelle v1.4 (66017). La meilleure chose à faire est de lire la page manuellement avec les encodages remplacés.


Réponse populaire

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);
    }
}

Ceci est une version simple de la solution trouvée ici (pour certaines raisons, elle a été supprimée)




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