Pregunta

Estoy leyendo un archivo XML de un servicio web REST, analizándolo y mostrando los detalles en UITableView. El archivo XML está codificado como ISO-8859-1 y contiene caracteres acentuados. Si solo agrego la cadena a TableView, entonces obtengo un personaje basura, por lo que he intentado convertirla a UTF8, pero se convierte en un signo de interrogación, lo que implica que no entiende el personaje.

Aquí está el código:

foreach(XmlNode myNode in myNodeList)
{
    Encoding isoEnc = Encoding.GetEncoding ("iso-8859-1");

    string utfResult = Encoding.UTF8.GetString (isoEnc.GetBytes(myNode.InnerText));

    _myCollection.Add(utfResult);
}

¿Alguna idea de lo que está pasando aquí y cómo mostrar los caracteres acentuados?

¿Fue útil?

Solución

Ok, problema ahora resuelto. Parece que mi error suponía que el StreamReader trataría con la codificación ISO-8859-1 por defecto. Cambié mi constructor StreamReader de:

StreamReader reader = new StreamReader (response.GetResponseStream ());

a:

StreamReader reader = new StreamReader (response.GetResponseStream (), Encoding.GetEncoding("iso-8859-1"));

Al decirle al corredor de transmisión que espere la codificación correcta, todo lo demás simplemente cae en su lugar.

Otros consejos

Bueno, su "conversión" a UTF-8 es muy sospechosa. Básicamente estás diciendo que sabes mejor que el archivo XML, que aunque reclamación (es ser ISO-8859-1, De Verdad Sepa que estaba codificado en UTF-8. ¿Tienes alguna razón para creer eso?

Si sabe cuáles deben ser los personajes, le sugiero que agregue algunos registros para indicar los valores unicode de esos caracteres (como enteros) y compararlos con el cuadros de código en unicode.org. Entonces sabrás si tu problema está en visualización los personajes, o leerlos del feed en primer lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top