为什么这不是HTMLEncoding - "<"或"&"

时间:2015-06-24 06:21:20

标签: c#

任何人都可以告诉我为什么这不是使用htmlencode进行编码

任何具有<的字符串字符串之前即

<something or &something 
在查看&lt;编码时,

没有显示回html页面。和&amp;没有被编码。我希望这些字符被编码为&lt;或&amp;

编辑:这是我用来编码字符串的代码:

var replacedHtml = Regex.Replace(html,
            @"</?(\w*)[^>]*>",
            me => AllowedTags.Any(s => s.Equals(me.Groups[1].Value, StringComparison.OrdinalIgnoreCase))
                ? me.Value
                : HttpUtility.HtmlEncode(me.Value), RegexOptions.Singleline);

        return replacedHtml;

编辑:我认为问题不是在服务器端,而是在角度方面。 ng-bind-html

<span ng-bind-html="ctl.linkGroup.Notes | TextToHtmlSafe">

angular.module('CPSCore.Filters')
.filter('TextToHtmlSafe', ['$sce',function ($sce) {
    return function (text) {
        if (!text)
            return text;

        var htmlText = text.replace(/\n/g, '<br />');
        return $sce.trustAsHtml(htmlText);
    };
}]);

宣布

<something 

没有结束标记是不安全的,因此将其从视图中删除

2 个答案:

答案 0 :(得分:0)

尝试System.Net.WebUtility.HtmlDecode正确解码特殊字符。使用此<更改为&lt;&更改为&amp;,这是正确显示的html页面。

答案 1 :(得分:0)

在HTML中,&符号(“&amp;”)声明实体引用的开头(特殊字符)。如果您希望在网页上显示文本,则应使用编码的命名实体“&amp;” - w3c.org上的更多技术mumbo-jumbo。虽然大多数网络浏览器都会让你在没有编码的情况下逃脱,但在奇怪的边缘情况下,东西会变得很冒险,而且完全无法用XML格式化。

要记住编码的其他主要字符是&lt; (&lt;)和&gt; (&gt;),您不希望您的浏览器混淆HTML标记的开始和结束位置