转义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.UrlEncode
或HttpUtility.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。 '
在html中呈现为'
(使用htmldecode),导致它失败:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
有一些特殊的引号字符不会被HtmlEncode删除,不会像“and”那样正确显示在Edge或者IE中。 你可以用下面的函数来replace这些字符。
private string RemoveJunkChars(string input) { return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\"")); }