我为什么要拾取外国字符,如何删除它们?

c# html html-agility-pack string

当我使用HTML Agility Pack抓取H3标签的InnerText时,我正在拾取额外的字符(Ã,)。

我不确定这些角色来自何处或如何删除它们。

提取的字符串:

 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
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因