Pergunta

Estou lendo um arquivo XML de um serviço de REST Web, analisando -o e exibindo os detalhes em uma View Uitable. O arquivo XML está codificado como ISO-8859-1 e contém caracteres acentuados. Se eu apenas adicionar a string à TableView, eu tenho um personagem lixo exibido, então tentei convertê -la para o UTF8, mas ela é convertida em um ponto de interrogação, o que implica que não entende o personagem.

Aqui está o 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);
}

Alguma idéia do que está acontecendo aqui e como exibir os acordos?

Foi útil?

Solução

Ok, problema agora resolvido. Parece que meu erro estava assumindo que o streamreader lidaria com a codificação ISO-8859-1 por padrão. Eu mudei meu construtor de streamreader de:

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

para:

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

Ao dizer ao streamreader para esperar a codificação correta, tudo o mais se encaixa.

Outras dicas

Bem, sua "conversão" para o UTF-8 é altamente suspeita. Você está basicamente dizendo que sabe melhor do que o arquivo XML - que embora reivindicações ser ISO-8859-1, você verdade Saiba que foi codificado no UTF-8. Você tem algum motivo para acreditar nisso?

Se você sabe o que os personagens devem ser, sugiro que você adicione algum log para indicar os valores unicode desses caracteres (como números inteiros) e compará -los com o gráficos de código em unicode.org. Então você saberá se seu problema está em exibindo os personagens, ou lendo -os a partir do feed em primeiro lugar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top