Problema de codificación de cliente web de Windows Phone 8

c# html-agility-pack visual-studio-2010 windows-phone-7 windows-phone-8

Pregunta

Estoy tratando de analizar HTML de un sitio usando el juego de caracteres Windows-1254. pero todos los caracteres turcos se muestran así: � � � � �

¿Dónde está el problema real? Intenté estos:

webClient.Encoding = System.Text.Encoding.UTF8
webClient.Encoding = System.Text.Encoding.GetString("UTF-8");

como función esta:

public string ReplaceText(string _text)
        {
            _text = _text.Replace("Ä°", "Ä°").Replace("ı", "ı").Replace("ü", "ü").Replace("ÅŸ", "ÅŸ").Replace("Ã…", "Åž").Replace("ç", "ç").Replace("ö", "ö").Replace("ÄŸ", "ÄŸ").Replace("Ç", "Ç").Replace("Ö", "Ö").Replace("Ãœ", "Ãœ");
            return _text;
        }

También este encabezados:

webClient.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
webClient.Headers["Accept-Charset"] = "windows-1254,utf-8;q=0.7,*;q=0.7";

(con iso-8859-9, utf8 también)

y así es como estoy usando el cliente web:

WebClient wb = new WebClient();         
            wb.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
            wb.Headers["Accept-Charset"] = "windows-1254,utf-8;q=0.7,*;q=0.7";
            wb.DownloadStringAsync(new Uri("http://www.site.com"));
            wb.Encoding = System.Text.Encoding.UTF8;
            wb.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DSC);

entrenador de animales:

HtmlDocument htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(e.Result);

            var inputs = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"mrln-eyhaber\"]//a");

            foreach (var input in inputs)
            {

                textarea.Text += this.ReplaceText(input.Attributes["title"].Value.ToString()) + "\n\n";
            }

Respuesta aceptada

En lugar de utilizar un enfoque estándar, ¿por qué no crea una clase personalizada, específica para sus necesidades, que se encargará de la respuesta?

Esto te ayudará a generar la clase, así: introduzca la descripción de la imagen aquí

y luego todo lo que tienes que hacer

webClient.Encoding = CustomEncoding();

Déjame saber como va (:


Respuesta popular

¿Por qué configuró la codificación en UTF-8 si sabe que es windows-1254? La solución es bastante sencilla, solo tiene que configurar la codificación correcta en el WebClient .

wb.Encoding = Encoding.GetEncoding(1254);

o

wb.Encoding = Encoding.GetEncoding("windows-1254");

Además, su método ReplaceText tampoco debería ser necesario.

EDITAR: Por supuesto, Windows Phone no admite esa codificación de esa manera, debe implementar cualquier otra codificación que no sea utf-8 o utf-16. Afortunadamente, hay una manera fácil de hacerlo, solo tiene que usar el programa descrito aquí para generar su propia clase de codificación.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué