Вопрос

Я читаю файл XML из веб -службы REST, анализирую его и отображаю детали в UitableView. XML-файл находится в кодировании как ISO-8859-1 и содержит символы с акцентом. Если я просто добавлю строку в TableView, то я выставлю отображение мусорного символа, поэтому я попытался преобразовать ее в UTF8, но он преобразуется в знак вопроса, подразумевая, что он не понимает символа.

Вот код:

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

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

    _myCollection.Add(utfResult);
}

Есть идеи, что здесь происходит, и как показать акцентированного Chars?

Это было полезно?

Решение

ОК, проблема теперь решена. Кажется, что моя ошибка предполагала, что StreamReader будет иметь дело с кодированием ISO-8859-1, кодирующим по умолчанию. Я изменил свой конструктор StreamReader с:

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

к:

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

Сказав StreamReader ожидать правильного кодирования, все остальное только встает на свои места.

Другие советы

Ну, ваше «преобразование» в UTF-8 очень подозрительно. Вы в основном говорите, что знаете лучше, чем файл XML - хотя это претензии быть ISO-8859-1, вы В самом деле Знайте, что это было закодировано в UTF-8. У вас есть основания поверить в это?

Если вы знаете, какие символы должны быть, я предлагаю вам добавить несколько журналов, чтобы указать значения Unicode этих символов (как целые числа) и сравнить их с Кодовые диаграммы на unicode.org. Анкет Тогда вы узнаете, находится ли ваша проблема в отображение Персонажи, или читают их с корма в первую очередь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top