Escape текст для HTML

Как мне избежать текста для использования HTML в C #? я хочу делать

sample="<span>blah<span>"

и имеют

<span>blah<span>

показывать как обычный текст вместо бла только с тегами часть HTML :(. Использование C # не ASP

Ответы на вопрос(8)

using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);
 12 нояб. 2016 г., 11:04
HttpUtility больше не существует (магазин приложений win)
 04 дек. 2009 г., 19:14
Если вы также хотите кодировать символы Unicode в не-Unicode, проверьте это:stackoverflow.com/questions/82008/…
 09 дек. 2014 г., 12:46
Что-то, что вы не хотите обнаруживать плохим способом: вышеописанный метод сам по себе не экранирует управляющие символы. Смотрите принятый ответ здесь:stackoverflow.com/a/4501246/1543677 и использовать оба.

Если вы используете .NET 4 или выше, и вы не хотите ссылатьсяSystem.Web, ты можешь использоватьWebUtility.HtmlEncode отSystem

var encoded = WebUtility.HtmlEncode(unencoded);

Это имеет тот же эффект, что иHttpUtility.HtmlEncode и должно быть предпочтительнееSystem.Security.SecurityElement.Escape.

 19 дек. 2013 г., 10:38
@ Travis У них тоже нет уязвимостей, простоSecurityElement.Escape работает на XML иHtmlEncode работает на HTML, а XML и HTML-кодирование имеют немного разные требования (см.this answer для деталей). Так, например,SecurityElement.Escape разрешено использовать&apos;, в то время какHtmlEncode не является.
 28 дек. 2016 г., 13:43
@ Travis Я думаю, что даже лучше "извините" в том, чтоSystem.Net is available to Portable Class Libraries и другие два варианта, по-видимому, отсутствуют сегодня утром. ; ^)
 18 дек. 2013 г., 23:43
Почему это должно быть предпочтение над SecurityElement.Escape? Есть ли уязвимости в последнем, или первый просто более способный?

Вы можете использовать актуальные теги HTML<xmp> а также</xmp> вывести строку как есть, чтобы показать все теги между тегами xmp.

Или вы также можете использовать на сервереServer.UrlEncode или жеHttpUtility.HtmlEncode.

 17 июн. 2009 г., 07:53
+1 за продвижение печально известногоxmp тег
 11 мая 2017 г., 16:19
<xmp> давно устарел:stackoverflow.com/questions/8307846/… использование<pre> вместо
 16 февр. 2015 г., 08:54
Отличный пост, спасибо человеку, это исправлено именно то, что я искал!
 17 июн. 2009 г., 07:36
Я сделал вопрос более понятным. Я не хочу, чтобы теги были частью HTML, поскольку пользователь может сделать & lt; / pre & gt; и сломай это.

никто еще не упомянул, в 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-net- MVC-2.aspx

 17 нояб. 2017 г., 08:33
дайте пожалуйста синтаксис для бритвы? @Nacht

Кроме того, вы можете использовать это, если вы не хотите использоватьSystem.Web монтаж:

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

вЭта статья, разница междуSystem.Security.SecurityElement.Escape() а такжеSystem.Web.HttpUtility.HtmlEncode() является то, что первый также кодирует апостроф(') персонажи.

 11 дек. 2012 г., 11:31
Хороший вопрос о том, что нет ссылки на System.Web
 12 нояб. 2016 г., 11:05
System.Security.SecurityElement не существует в приложениях магазина Windows
 05 июн. 2013 г., 23:16
Не сказатьSecurityElement.Escape() убегает дляXML который не совсем HTML.

.NET 4.0 и выше:

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

Не видел это здесь

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

это было единственное, что работало (asp 4.0+) при работе с html, подобным этому.&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>
 25 сент. 2015 г., 19:05
Ну, это потому, что вы имеете дело с JavaScript ...

есть некоторые специальные символы кавычек, которые не удаляются HtmlEncode и не будут правильно отображаться в Edge или IE, как & # x201D; и & # x201C; , Вы можете заменить эти символы на что-то вроде функции ниже.

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

Ваш ответ на вопрос