Question

Je lis un fichier XML à partir d'un service Web REST, l'analyse, et l'affichage des détails dans un UITableView. Le fichier XML est codé en iso-8859-1 et contient des caractères accentués. Si je viens d'ajouter la chaîne à la tableview je reçois un caractère indésirable affiché, donc je l'ai essayé de le convertir en UTF8 mais il est converti en un point d'interrogation, ce qui implique qu'il ne comprend pas le caractère.

Voici le code:

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

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

    _myCollection.Add(utfResult);
}

Toutes les idées ce qui se passe ici, et comment afficher les caractères accentués?

Était-ce utile?

La solution

OK, problème maintenant résolu. Il semble que mon erreur a été en supposant que le StreamReader traiterait l'encodage iso-8859-1 par défaut. J'ai changé mon constructeur StreamReader de:

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

à:

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

En racontant l'StreamReader pour attendre l'encodage correct, tout le reste tombe juste en place.

Autres conseils

Eh bien, votre "conversion" en UTF-8 est très suspect. Vous dites essentiellement que vous savez mieux que le fichier XML - que, bien que Réclamations pour être ISO-8859-1, vous vraiment sais qu'il a été encodées en UTF-8 . Avez-vous des raisons de croire que?

Si vous savez ce que les personnages sont censés être, je vous suggère d'ajouter une journalisation pour indiquer les valeurs Unicode de ces caractères (comme des entiers) et de les comparer avec la cartes de code sur Unicode.org. Ensuite, vous saurez si votre problème est dans afficher les personnages ou les lire à partir de l'alimentation en premier lieu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top