2010-07-02 23 views
11

¿Cómo puedo escapar de los caracteres HTML en .NET?¿Cómo puedo escapar de los caracteres HTML? en .NET -> & quot;

Estoy agarrando html de una cadena json y en el título me sale "more text. Parece que tengo que hacerlo dos veces para llegar a convertirse en "" entonces que para ser un '"'.

¿Cómo puedo escapar de todas los códigos de escape de texto HTML en .NET?

+0

posible duplicado de [Escape de texto para HTML] (http://stackoverflow.com/questions/1005264/escape-text-for-html) –

Respuesta

25

Si tiene que hacerlo dos veces, entonces ha codificado dos veces su cadena de origen, por lo que debe decodificarla dos veces para volver a la cadena original (no codificada).

Puede usar System.Web.HttpUtility.HtmlEncode() y HtmlDecode() para estos fines.

2

parece que su la secuencia original tenía doble codificación. quot; es solo una entidad parcial, y no puede decodificarse en el personaje en sí mismo. Si obtiene el título de una página web que no controla, puede hacer muy poco, excepto , como usted no lo hace, doble decodificación

4

Eche un vistazo a la clase HttpUtility. Tiene algunas funciones estáticas útiles.

Sin embargo, como señala @codekaizen, el ejemplo que tiene tiene doble codificación. Si no tiene el control de la fuente, entonces juegue con las funciones HtmlDecode y (¿quizás?) UrlDecode en HttpUtility para que, afortunadamente, pueda deshacer los errores de la fuente.

1

Sí, tendría que decodificar HTML la cadena dos veces, ya que parece estar codificada dos veces.

Quizás debería mirar la fuente en su lugar y descubrir por qué la cadena está codificada en HTML en primer lugar. No debería ser, ni siquiera una vez. Una cadena JSON no es HTML, por lo que no debería estar codificada en HTML.

para codificar una comilla en una cadena JSON utiliza la barra invertida, de manera correcta JSON debe ser algo como:

{"title":"\"I Won't Let Them Take You\""} 
Cuestiones relacionadas