Отображение iso-8859-1 символов в C # с Monotouch - PullRequest
1 голос
/ 04 января 2010

Я читаю XML-файл из веб-службы REST, анализирую его и отображаю детали в UITableView. XML-файл имеет кодировку iso-8859-1 и содержит акцентированные символы. Если я просто добавлю строку в табличное представление, то у меня отобразится ненужный символ, поэтому я попытался преобразовать его в 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);
}

Есть идеи, что здесь происходит и как отобразить акцентированные символы?

Ответы [ 2 ]

2 голосов
/ 05 января 2010

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

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

до:

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

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

1 голос
/ 04 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...