当前位置:  开发笔记 > 编程语言 > 正文

转义HTML的文本

如何解决《转义HTML的文本》经验,为你挑选了6个好方法。

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

sample="blah"

并有

blah

显示为纯文本而不是blah只与html的标签部分:(.使用C#而不是ASP



1> Michael S. S..:
using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);


你不想找出坏道的东西:上面的方法本身并没有逃脱控制字符.请参阅此处接受的答案:http://stackoverflow.com/a/4501246/1543677并同时使用它们.
如果您还想将unicode字符编码为非unicode,请查看:http://stackoverflow.com/questions/82008/non-unicode-xml-representation

2> Tereza Tomco..:

此外,如果您不想使用System.Web程序集,则可以使用此选项:

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

每这篇文章,之间的区别System.Security.SecurityElement.Escape(),并System.Web.HttpUtility.HtmlEncode()为前者还对单引号(')字符.


不是说`SecurityElement.Escape()`转义为*XML*,它不完全是HTML.

3> Alex..:

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

var encoded = WebUtility.HtmlEncode(unencoded);

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


@Travis两者都没有漏洞,只是`SecurityElement.Escape`在XML上运行,而'HtmlEncode`在HTML上运行,而XML和HTML编码的要求略有不同(参见[this answer](http:// stackoverflow. com/a/2083770/175157)详情).因此,例如,允许`SecurityElement.Escape`使用`'',而'HtmlEncode`则不允许.

4> Nacht - Rein..:

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



5> Victor..:

.NET 4.0及更高版本:

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



6> Andrew Sieme..:

您可以使用实际的html标记

</code>并按<code>原样输出字符串,以显示xmp标记之间的所有标记.

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

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有