Perché raccolgo personaggi stranieri e come posso rimuoverli?

c# html html-agility-pack string

Domanda

Sto raccogliendo caratteri extra (Ã,) rispetto all'origine quando afferro l'InnerText di un tag H3 usando l'HTML Agility Pack.

Non sono sicuro da dove provengano questi personaggi o come rimuoverli.

Stringa estratta:

 Week 1

Sorgente HTML:

<h3>
<span> </span>Week 1</h3>

Codice corrente:

private void getWeekNumber(string url)
{
    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

    htmlDoc.Load(new System.IO.StringReader(url));

    foreach (HtmlAgilityPack.HtmlNode h3 in htmlDoc.DocumentNode.SelectNodes("//h3"))
    {
        MessageBox.Show(h3.InnerText);
    }
}

Soluzione corrente (rubata da qualche parte su StackOverflow, perso il collegamento):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "GET";

using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new System.IO.StreamReader(stream, Encoding.UTF8))
{
    result = reader.ReadToEnd();
}

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

htmlDoc.Load(new System.IO.StringReader(result));

foreach (HtmlAgilityPack.HtmlNode h3 in htmlDoc.DocumentNode.SelectNodes("//h3"))
{
    MessageBox.Show(h3.InnerText);
}

Risposta accettata

Devi impostare la codifica prima di fare ...

htmlDoc.Load(new System.IO.StringReader(url), Encoding.UTF8);

Questo dice al pacchetto di agilità che i caratteri sono UTF8 piuttosto che qualche altra codifica.

La ragione per cui devi farlo qui è che questo è il punto in cui viene analizzato incorrettamente. Dopodiché stai memorizzando i caratteri Ã, letterali.

Anche i caratteri nella stringa modificati dopo aver scaricato HTML da Internet potrebbero essere di interesse.


Risposta popolare

potrebbe essere la codifica del tuo personaggio, impostare la codifica su UTF-8




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é