C# 从网站上刮取的字符串有'&;nbsp';哪个输出为'';

C# 从网站上刮取的字符串有'&;nbsp';哪个输出为'';,c#,string,encoding,formatting,C#,String,Encoding,Formatting,我正在抓取一个包含字符串的网站。 我将字符串存储为:stringhead=h.TextContent 当我输出字符串时,无论字符串中的在哪里,我都会看到一个?。我尝试将字符串的编码更改为Unicode和UTF-16,尝试替换字符串本身中的,还尝试替换?。 似乎什么都不管用 这是C#中的一个控制台项目 我所尝试的: Byte[] encodedBytes = unicode.GetBytes(head); string decodedHead = unicode.GetString(encoded

我正在抓取一个包含
字符串的网站。 我将字符串存储为:
stringhead=h.TextContent

当我输出字符串时,无论字符串中的
在哪里,我都会看到一个
。我尝试将字符串的编码更改为Unicode和UTF-16,尝试替换字符串本身中的
,还尝试替换
。 似乎什么都不管用

这是C#中的一个控制台项目

我所尝试的:

Byte[] encodedBytes = unicode.GetBytes(head);
string decodedHead = unicode.GetString(encodedBytes).Replace('&', ' ');


是一个HTML实体,代表。因此,当您获取文本内容时,它将不包含
。相反,它将包含不间断空格字符。我猜控制台不知道如何显示该字符,所以它只输出

如果你想摆脱它,你可以用一个简单的空间来代替它:

head = head.Replace("\u00A0", " ");
00A0
是不间断空格字符的Unicode代码


但是,如果您打算对文本进行更多的处理,而不仅仅是在控制台中显示文本或进行一些简单的操作,请务必小心。通常一个不间断的空格是有原因的,因为它禁止在单词之间换行。例如,100 km不应在100和km之间进行包装。

是一个HTML实体,代表。因此,当您获取文本内容时,它将不包含
。相反,它将包含不间断空格字符。我猜控制台不知道如何显示该字符,所以它只输出

如果你想摆脱它,你可以用一个简单的空间来代替它:

head = head.Replace("\u00A0", " ");
00A0
是不间断空格字符的Unicode代码


但是,如果您打算对文本进行更多的处理,而不仅仅是在控制台中显示文本或进行一些简单的操作,请务必小心。通常一个不间断的空格是有原因的,因为它禁止在单词之间换行。例如,100公里不应在100和100公里之间换行。

网页的语言设置(标题中的lan属性)是什么?如果语言设置正确,Html不需要编码。浏览器将在机器上正确显示(前提是字体可用)。使用TextContent而不是OuterHTML可能是一个问题。nbsp是一个非中断间隔字符,应显示为空白。您应该使用System.Net.WebUtility.HtmlCode(字符串)的任何innertext。如果nbsp在标记名中,则不应更改,并且是正确的。好的。我会记住的。下面的答案似乎对我有效,但System.Net.WebUtility.HtmlCode(head)没有。不管怎样,谢谢你,网页的语言设置(标题中的lan属性)是什么?如果语言设置正确,Html不需要编码。浏览器将在机器上正确显示(前提是字体可用)。使用TextContent而不是OuterHTML可能是一个问题。nbsp是一个非中断间隔字符,应显示为空白。您应该使用System.Net.WebUtility.HtmlCode(字符串)的任何innertext。如果nbsp在标记名中,则不应更改,并且是正确的。好的。我会记住的。下面的答案似乎对我有效,但System.Net.WebUtility.HtmlCode(head)没有。无论如何谢谢你!非常感谢它的工作:D.网页上的空间只是为了格式化,我检查过了。另外,我只是要输出文本,所以没有其他需要:)哎呀!非常感谢它的工作:D.网页上的空间只是为了格式化,我检查过了。另外,我只是要输出文本,所以没有其他需要:)