Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# html解码是如何工作的?_C# - Fatal编程技术网

C# html解码是如何工作的?

C# html解码是如何工作的?,c#,C#,在我的应用程序中,我比较字符串。我有看起来相同的字符串,但其中一些包含空格,而另一些包含nbsp,所以当我比较它们时,我发现它们是不同的。但是,它们代表相同的实体,因此在比较它们时会出现问题。这就是为什么我要解码我比较的字符串。这样,两个字符串中的nbsp都将转换为空格,在进行比较时,它们将被视为相等。下面是我的工作: HttpUtility.HtmlDecode(string1)[0] HttpUtility.HtmlDecode(string2)[0] 但我仍然知道string1[0]的a

在我的应用程序中,我比较字符串。我有看起来相同的字符串,但其中一些包含空格,而另一些包含nbsp,所以当我比较它们时,我发现它们是不同的。但是,它们代表相同的实体,因此在比较它们时会出现问题。这就是为什么我要解码我比较的字符串。这样,两个字符串中的nbsp都将转换为空格,在进行比较时,它们将被视为相等。下面是我的工作:

HttpUtility.HtmlDecode(string1)[0]
HttpUtility.HtmlDecode(string2)[0]
但我仍然知道string1[0]的ascii码是160,string2[0]的ascii码是32


显然,我不理解这个概念。我做错了什么?

你在试图比较两个不同的角色,不管他们看起来有多像你

它们具有不同的字符代码这一事实足以使比较失败。最简单的方法是用一个规则的空格替换不间断的空格,然后比较它们

bool c = html.Replace('\u00A0', ' ').Equals(regular);

不间断空格和空白是不同的字符。他们不平等。参见“它们代表同一实体”基于什么逻辑?定义你的相似性。可能重复@Andrey。例如,我有一个类似“某家餐馆”的名字列表,我需要在db中搜索这些名字。因此,如果我在数据库中找到“some restaurant”记录,它是相同的。ascii 160不是ascii,因为ascii只有128个7位字符。编码在这里很重要:utf-8或其他一些8位编码。在比较字符串之前,您必须找出编码。不,您只是解码HTML并返回一个代码为160的字符。