逃命HTML文本逃命HTML文本(Escape text for HTML)

2019-05-13 11:28发布

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

sample="<span>blah<span>"

并有

<span>blah<span>

显示为纯文本,而不是只与HTML :(的标记部分等等。使用C#不ASP

Answer 1:

using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);


Answer 2:

此外,您还可以使用这个,如果你不希望使用System.Web组件:

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

每本文之间的差异System.Security.SecurityElement.Escape()System.Web.HttpUtility.HtmlEncode()是,前者还对单引号(')字符。



Answer 3:

如果您使用以上.NET 4,你不想要引用System.Web ,你可以使用WebUtility.HtmlEncodeSystem

var encoded = WebUtility.HtmlEncode(unencoded);

这具有相同的效果HttpUtility.HtmlEncode和应当优于System.Security.SecurityElement.Escape



Answer 4:

还没有人提到,在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



Answer 5:

您可以使用实际的HTML标记<xmp></xmp>输出字符串是显示所有标签中的XMP标签之间。

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



Answer 6:

.NET 4.0以上:

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


Answer 7:

没有看到这这里

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

它只是说,像这样的HTML打交道时的工作(ASP 4.0+)的东西。 所述&apos; 被渲染为' (使用htmldecode)在HTML,导致它失败:

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


Answer 8:

有未通过的HTMLEncode删除正确喜欢”和“不显示在边缘或IE浏览器的一些特殊字符的报价。 你可以用程度类似下面的功能替换这些字符。

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


文章来源: Escape text for HTML
标签: c# html escaping