Visualizzazione di caratteri iso-8859-1 in C # con MonoTouch
-
18-09-2019 - |
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?
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.