estoy interactuando con un servidor web utilizando un programa cliente de escritorio en C# y .Net 3.5. Estoy usando Fiddler para ver qué tráfico envía el navegador web y emular eso. Lamentablemente, este servidor es viejo, y está un poco confundido acerca de las nociones de conjuntos de caracteres y utf-8. Sobre todo usa Latin-1.HttpUtility.HtmlEncode no codifica todo
Cuando introducir datos en el navegador Web que contienen caracteres "especiales", así como "Ω π ℵ ∞ ♣ ♥ ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓" violinista me muestran que están siendo transmitidos de la siguiente del navegador al servidor: "♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ "
Pero para mi cliente, HttpUtility.HtmlEncode no convierte estos caracteres, los deja como están. ¿Qué necesito para llamar a convertir "♈" a & # 9800; ¿y así?
Extrañamente, .Net 2.0 de HttpUtility codificará adecuadamente los caracteres entre 0xA0 y 0xFF, pero no los de arriba (Compruébelo usted mismo.! utilizando reflector.) –
extraño. HttpUtility.HtmlEncode (todas las sobrecargas) HttpEncoder.Current.HtmlEncode llamar, por lo que parece que el codificador utilizado depende el valor de HttpEncoder.Current, respecto del cual: "Si se especifica un tipo de HttpEncoder derivado en el archivo de configuración, la propiedad Current devuelve una referencia al tipo personalizado. Sin embargo, si no se utiliza un codificador personalizado, la propiedad devuelve una referencia a la instancia predeterminada de HttpEncoder de ASP.NET.La propiedad Current no es segura para subprocesos. Establezca esta propiedad solo en el método Application_Start de la aplicación, porque Application_Start se ejecuta en un único hilo. " – Triynko
Creo que la razón de esto es que esos caracteres no son ilegales si el conjunto de caracteres especificado para el documento lo permite. HtmlEncode está destinado a eliminar peligros caracteres, no codifica todos los caracteres que podrían codificarse. La letra A también puede codificarse así, pero no es necesario. – TheXenocide