Domanda

sto leggendo un file XML da un servizio Web REST, l'analisi, e la visualizzazione dei dettagli in un UITableView. Il file XML è codificato come iso-8859-1 e contiene caratteri accentati. Se ho appena aggiungere la stringa alla Tableview allora ottengo un personaggio spazzatura visualizzata, così ho cercato di convertirlo in UTF-8, ma viene convertito in un punto interrogativo, il che implica che non capisce il carattere.

Ecco il codice:

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

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

    _myCollection.Add(utfResult);
}

Tutte le idee che cosa sta succedendo qui, e come visualizzare i caratteri accentati?

È stato utile?

Soluzione

OK, problema ora risolto. Sembra che il mio errore è stato ammesso che lo StreamReader sarebbe occupato con la codifica iso-8859-1 per impostazione predefinita. Ho cambiato il mio costruttore StreamReader da:

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

a:

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

Per raccontare la StreamReader aspettarsi la codifica corretta, tutto il resto cade proprio a posto.

Altri suggerimenti

Bene, il vostro "conversione" a UTF-8 è altamente sospetto. Stai dicendo che in fondo lo sai meglio di file XML - che, anche se richieste per essere ISO-8859-1, davvero So che era codificato in UTF-8 . Avete qualche ragione di credere che?

Se si conosce quello che i personaggi sono destinate ad essere, ti suggerisco di aggiungere un po 'di registrazione per indicare i valori Unicode di quei personaggi (come numeri interi) e confrontarli con il grafici di codice su Unicode.org . Allora saprete se il vostro problema è in visualizzazione i personaggi, o la lettura dal feed in primo luogo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top