任何人都可以告诉我为什么这不是使用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
没有结束标记是不安全的,因此将其从视图中删除
答案 0 :(得分:0)
尝试System.Net.WebUtility.HtmlDecode
正确解码特殊字符。使用此<
更改为<
和&
更改为&
,这是正确显示的html页面。
答案 1 :(得分:0)
在HTML中,&符号(“&amp;”)声明实体引用的开头(特殊字符)。如果您希望在网页上显示文本,则应使用编码的命名实体“&”
- w3c.org上的更多技术mumbo-jumbo。虽然大多数网络浏览器都会让你在没有编码的情况下逃脱,但在奇怪的边缘情况下,东西会变得很冒险,而且完全无法用XML格式化。
要记住编码的其他主要字符是&lt; (<
)和&gt; (>
),您不希望您的浏览器混淆HTML标记的开始和结束位置