我正在从REST Web服务读取XML文件,解析它,并在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);
}
这里有什么想法,以及如何显示重音字符?
答案 0 :(得分:2)
好的,问题现在解决了。似乎我的错误是假设StreamReader默认处理iso-8859-1编码。我改变了我的StreamReader构造函数:
StreamReader reader = new StreamReader (response.GetResponseStream ());
为:
StreamReader reader = new StreamReader (response.GetResponseStream (), Encoding.GetEncoding("iso-8859-1"));
通过告诉StreamReader期望正确的编码,其他所有内容都会落实到位。
答案 1 :(得分:1)
嗯,你对UTF-8的“转换”非常可疑。你基本上说你比XML文件更清楚 - 尽管它声称是ISO-8859-1,你确实知道它是用UTF-8编码的。你有理由相信吗?
如果您知道字符的含义,我建议您添加一些日志记录以指示这些字符的Unicode值(作为整数),并将它们与code charts on Unicode.org进行比较。然后,您将知道您的问题是显示字符,还是首先从Feed中读取它们。