Furkan Gözükara
Furkan Gözükara

Reputation: 23830

HtmlAgilityPack - How to set custom encoding when loading pages

Is it possible to set custom encoding when loading pages with the method below?

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

I want to set encoding to "iso-8859-9".

I use C# 4.0 and WPF.

Edit: The question has been answered on MSDN.

Upvotes: 0

Views: 11282

Answers (3)

Mason Wan
Mason Wan

Reputation: 118

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

This is a simple version of the solution answered here (for some reasons it got deleted)

Upvotes: 3

Eric
Eric

Reputation: 2283

A decent answer is over here which handles auto-detecting the encoding as well as some other nifty features:

C# and HtmlAgilityPack encoding problem

Upvotes: 0

Jeff Mercado
Jeff Mercado

Reputation: 134891

I suppose you could try overriding the encoding in the HtmlWeb object.

Try this:

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

Note: It appears that the OverrideEncoding property was added to HTML agility pack in revision 76610 so it is not available in the current release v1.4 (66017). The next best thing to do would be to read the page manually with the encodings overridden.

Upvotes: 5

Related Questions