转义HTML的文本

我如何转义文本的HTML在C#中使用? 我想要做

sample="<span>blah<span>" 

并拥有

 <span>blah<span> 

显示为纯文本而不是纯粹的HTML标签的一部分:(使用C#不是ASP

 using System.Web; var encoded = HttpUtility.HtmlEncode(unencoded); 

另外,如果您不想使用System.Web程序集,则可以使用它:

 var encoded = System.Security.SecurityElement.Escape(unencoded) 

根据本文 , System.Security.SecurityElement.Escape()System.Web.HttpUtility.HtmlEncode()之间的区别在于前者也编码撇号(')字符。

如果您使用的是.NET 4或更高版本,并且不想引用System.Web ,则可以使用WebUtility.HtmlEncode

 var encoded = WebUtility.HtmlEncode(unencoded); 

这与HttpUtility.HtmlEncode具有相同的效果, HttpUtility.HtmlEncode应优先于System.Security.SecurityElement.Escape

没有人提到过,在ASP.NET 4.0中有新的语法来做到这一点。 代替

 <%= HttpUtility.HtmlEncode(unencoded) %> 

你可以简单的做

 <%: unencoded %> 

在这里阅读更多: http : //weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- ASP净MVC-2.aspx

您可以使用实际的html标记<xmp></xmp>输出string,以显示xmp标记之间的所有标记。

或者你也可以在服务器上使用Server.UrlEncodeHttpUtility.HtmlEncode

.NET 4.0及以上版本:

 using System.Web.Security.AntiXss; //... var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true); 

在这里没有看到这个

 System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site") 

这是唯一的工作(ASP 4.0+)处理像这样的HTML。 &apos; 在html中呈现为' (使用htmldecode),导致它失败:

 <a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It&apos;s Allstars'); return false;">It's Allstars</a> 

有一些特殊的引号字符不会被HtmlEncode删除,不会像“and”那样正确显示在Edge或者IE中。 你可以用下面的函数来replace这些字符。

 private string RemoveJunkChars(string input) { return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\"")); }