html编码空间的HtmlDecode不是空格

时间:2012-11-26 12:43:58

标签: c# asp.net vb.net

直到现在我才想到HttpUtility.HtmlDecode(" ")是一个空间。但是下面的代码总是返回false。

string text = " ";

text = HttpUtility.HtmlDecode(text);

string space = " ";

if (String.Compare(space, text) == 0)
  return true;
else
  return false;

当我尝试Server.HtmlDecode()

时也一样

为什么会这样?

非常感谢任何帮助

谢谢, Ñ

4 个答案:

答案 0 :(得分:15)

HTML实体 不代表空格,它代表一个不间断的空间。

非中断空格的字符代码为160:

string nbspace = "\u00A0";

另外,正如Marc Gravell注意到的那样,你对代码进行了双重编码,所以你需要对它进行两次解码以得到这个字符:

string text = " ";
text = HttpUtility.HtmlDecode(HttpUtility.HtmlDecode(text));

答案 1 :(得分:3)

我正在清理这样的HTML:

  var text = WebUtility.HtmlDecode(html)
      .Replace("\u00A0", " ") // Replace non breaking space with space.
      .Replace("  ", " ") // Shrink multiple spaces into one space.
      .Trim();

答案 2 :(得分:2)

 的HTML并不意味着任何类型的空间。从字面上看,它意味着文本  - 例如,如果您正在编写谈论HTML的HTML,您可能需要包含文本 ,您可以通过编写HTML {{ 1}}。

如果你有:

 

然后 将解码为不间断空间。

答案 3 :(得分:0)

你好,几分钟前我遇到了同样的问题。
我是这样解决的:

string text = " ";
text = Server.HtmlDecode(text).Trim;

现在: text = ""是正确的(末尾的修饰消除了空格)