Como escapar de texto para uso de html em c #? eu quero fazer
sample="<span>blah<span>"
e tem
<span>blah<span>
aparecem como texto sem formatação em vez de blá somente com as tags que fazem parte do html :(. Usando c # não ASP
Como escapar de texto para uso de html em c #? eu quero fazer
sample="<span>blah<span>"
e tem
<span>blah<span>
aparecem como texto sem formatação em vez de blá somente com as tags que fazem parte do html :(. Usando c # não ASP
Respostas:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Além disso, você pode usar isso se não quiser usar o System.Web
assembly:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Por este artigo , a diferença entre System.Security.SecurityElement.Escape()
e System.Web.HttpUtility.HtmlEncode()
é que o primeiro também codifica (')
caracteres de apóstrofo .
SecurityElement.Escape()
escapes para XML, que não é exatamente HTML.
Se você estiver usando o .NET 4 ou superior e não quiser fazer referência System.Web
, poderá usar a WebUtility.HtmlEncode
partir deSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Isso tem o mesmo efeito HttpUtility.HtmlEncode
e deve ser preferido System.Security.SecurityElement.Escape
.
SecurityElement.Escape
opera em XML e HtmlEncode
opera em HTML, e a codificação XML e HTML tem requisitos ligeiramente diferentes (consulte esta resposta para obter detalhes). Então, por exemplo, SecurityElement.Escape
é permitido usar '
, enquanto HtmlEncode
não é.
ninguém mencionou ainda, no ASP.NET 4.0 há uma nova sintaxe para fazer isso. ao invés de
<%= HttpUtility.HtmlEncode(unencoded) %>
você pode simplesmente fazer
<%: unencoded %>
leia mais aqui: 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
Você pode usar tags html reais <xmp>
e </xmp>
gerar a string como está para mostrar todas as tags entre as tags xmp.
Ou você também pode usar no servidor Server.UrlEncode
ou HttpUtility.HtmlEncode
.
Não vi isso aqui
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
foi a única coisa que funcionou (asp 4.0+) ao lidar com html como este. O '
é renderizado como '
(usando htmldecode) no html, causando falha:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
existem alguns caracteres de aspas especiais que não são removidos pelo HtmlEncode e não serão exibidos corretamente no Edge ou no IE como "e". você pode substituir esses caracteres por algo como a função abaixo.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}