Warum nehme ich fremde Charaktere auf und wie kann ich sie entfernen?

c# html html-agility-pack string

Frage

Ich nehme zusätzliche Zeichen (Ã,) im Vergleich zur Quelle auf, wenn ich den InnerText eines H3-Tags mit dem HTML Agility Pack ergreife.

Ich bin mir nicht sicher, woher diese Charaktere kommen oder wie sie entfernt werden.

Extrahierte Zeichenfolge:

 Week 1

HTML Quelle:

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

Aktueller Code:

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

Aktueller Workaround (Von irgendwo im Stackoverflow gestohlen, Link verloren):

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

Akzeptierte Antwort

Sie müssen die Kodierung einstellen, bevor Sie ...

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

Dies teilt dem Agility Pack mit, dass die Zeichen UTF8 sind und nicht irgendeine andere Kodierung.

Der Grund, warum Sie es hier tun müssen, ist, dass dies der Punkt ist, an dem es falsch analysiert wird. Danach speichern Sie die Buchstaben Ã, Zeichen.

Zeichen in Zeichenfolge, die nach dem Herunterladen von HTML aus dem Internet geändert werden, können ebenfalls von Interesse sein.


Beliebte Antwort

möglicherweise die Zeichencodierung, setzen Sie die Codierung auf UTF-8



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum