Отображение iso-8859-1 chars в c# с монотоуш
-
18-09-2019 - |
Вопрос
Я читаю файл 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. Анкет Тогда вы узнаете, находится ли ваша проблема в отображение Персонажи, или читают их с корма в первую очередь.