Frage

Ich lese eine XML -Datei aus einem REST -Webdienst, analysiert sie und zeige die Details in einem UitableView an. Die XML-Datei ist als ISO-8859-1 codiert und enthält akzentuale Zeichen. Wenn ich die Zeichenfolge nur zur Tischansicht hinzufüge, bekomme ich ein Junk -Zeichen angezeigt, also habe ich versucht, sie in UTF8 umzuwandeln, aber er wird in ein Fragezeichen konvertiert, was bedeutet, dass er den Charakter nicht versteht.

Hier ist der 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);
}

Irgendwelche Ideen, was hier los ist und wie man die akzentuierten Chars anzeigt?

War es hilfreich?

Lösung

Ok, das Problem jetzt gelöst. Es scheint, dass mein Fehler angenommen wurde, dass der StreamReader standardmäßig mit der ISO-8859-1-Codierung umgehen würde. Ich habe meinen StreamReader -Konstruktor geändert:

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

zu:

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

Indem der StreamReader die richtige Codierung erwartet, fällt alles andere nur zusammen.

Andere Tipps

Nun, Ihre "Konvertierung" zu UTF-8 ist sehr misstrauisch. Sie sagen im Grunde, dass Sie es besser wissen als die XML Ansprüche ISO-8859-1, Sie Ja wirklich Wisse, dass es in UTF-8 codiert wurde. Hast du einen Grund, das zu glauben?

Wenn Sie wissen, was die Charaktere sein sollen, schlage ich vor, dass Sie eine Protokollierung hinzufügen, um die Unicode -Werte dieser Zeichen (als Ganzzahlen) anzuzeigen und sie mit dem zu vergleichen Codediagramme auf unicode.org. Dann wissen Sie, ob Ihr Problem in Anzeige Die Charaktere oder lesen sie überhaupt aus dem Feed.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top