Почему это не HTMLEncoding - "<" или "&"
Может кто-нибудь сказать мне, почему это не кодирование с использованием htmlencode
любая строка, которая имеет <перед строкой, т.е.
<something or &something
не отображается на html-странице при просмотре кодировки <и & не кодируется. Я бы ожидал, что эти символы будут закодированы до <или &
edit: это код, который я использую для кодирования строки:
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;
edit: Я думаю, что проблема не на стороне сервера, а на угловой стороне. 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
без закрывающего тега не является безопасным и, следовательно, удаляет его из представления
В HTML символ амперсанда ("&") объявляет начало ссылки на сущность (специальный символ). Если вы хотите, чтобы текст отображался в тексте на веб-странице, вы должны использовать закодированную именованную сущность "&"
-Более технический mumbo-jumbo на w3c.org. В то время как большинство веб-браузеров позволят вам уйти, не кодируя их, материал может стать критичным в странных случаях кросс и полностью скомпрометироваться в XML.
Другие главные символы, которые нужно запомнить, - <(<
) и> (>
), вы не хотите путать браузер с тем, где начинаются и заканчиваются теги HTML
Попробуйте System.Net.WebUtility.HtmlDecode
для правильного декодирования специальных символов. Используя это, <
изменения в <
и &
изменяется в &
который правильно отображает html-страницы.