¿Cómo escapo el texto para el uso de HTML en C #? quiero hacer
sample="<span>blah<span>"
y tiene
<span>blah<span>
aparecer como texto sin formato en lugar de bla solo con las etiquetas que forman parte del html :(. Usar C # no ASP
¿Cómo escapo el texto para el uso de HTML en C #? quiero hacer
sample="<span>blah<span>"
y tiene
<span>blah<span>
aparecer como texto sin formato en lugar de bla solo con las etiquetas que forman parte del html :(. Usar C # no ASP
Respuestas:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Además, puede usar esto si no desea usar el System.Webensamblaje:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Según este artículo , la diferencia entre System.Security.SecurityElement.Escape()y System.Web.HttpUtility.HtmlEncode()es que el primero también codifica (')caracteres de apóstrofe .
SecurityElement.Escape()escapes para XML que no es exactamente HTML.
Si está utilizando .NET 4 o superior y no desea hacer referencia System.Web, puede usar WebUtility.HtmlEncodedesdeSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Esto tiene el mismo efecto que HttpUtility.HtmlEncodey debería preferirse sobre System.Security.SecurityElement.Escape.
SecurityElement.Escapeopera en XML y HtmlEncodeopera en HTML, y la codificación XML y HTML tiene requisitos ligeramente diferentes (vea esta respuesta para más detalles). Entonces, por ejemplo, SecurityElement.Escapeestá permitido usar ', mientras HtmlEncodeque no.
nadie ha mencionado aún, en ASP.NET 4.0 hay una nueva sintaxis para hacer esto. en vez de
<%= HttpUtility.HtmlEncode(unencoded) %>
simplemente puedes hacer
<%: unencoded %>
Puede usar etiquetas html reales <xmp>y </xmp>generar la cadena como se muestra para mostrar todas las etiquetas entre las etiquetas xmp.
O también puede usar en el servidor Server.UrlEncodeo HttpUtility.HtmlEncode.
<xmp>ha quedado en desuso hace mucho tiempo: stackoverflow.com/questions/8307846/… use <pre>en su lugar
No vi esto aquí
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
fue lo único que funcionó (asp 4.0+) al tratar con html como este. El 'se procesa como '(usando htmldecode) en el html, lo que hace que falle:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
hay algunos caracteres de comillas especiales que HtmlEncode no elimina y no se mostrarán en Edge o IE correctamente como "y". puede reemplazar estos caracteres con algo como la siguiente función.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}