Почему я собираю иностранных персонажей и как их можно удалить?

c# html html-agility-pack string

Вопрос

Я собираю дополнительные символы (Ã,) по сравнению с источником, когда я захватываю InnerText тега H3 с помощью пакета Agility Pack.

Я не знаю, откуда эти персонажи, или как их удалить.

Извлеченная строка:

 Week 1

HTML Источник:

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

Текущий код:

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

Текущее обходное решение (украденное где-то в stackoverflow, потеряло ссылку):

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

Принятый ответ

Вам нужно установить кодировку, прежде чем делать ...

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

Это сообщает пакет гибкости, что символы UTF8, а не какая-либо другая кодировка.

Причина, по которой вам нужно сделать это здесь, заключается в том, что это тот момент, когда он анализируется беспристрастно. После этого вы сохраняете буквенные символы Ã.

Символы в строке, измененные после загрузки HTML из Интернета, также могут представлять интерес.


Популярные ответы

может быть вашей кодировкой символов, установить кодировку в UTF-8



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow