1

我正在从 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);
}

任何想法这里发生了什么,以及如何显示重音字符?

4

2 回答 2

2

好的,现在问题解决了。看来我的错误是假设 StreamReader 默认会处理 iso-8859-1 编码。我将 StreamReader 构造函数从:

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

至:

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

通过告诉 StreamReader 期望正确的编码,其他一切都会到位。

于 2010-01-04T23:24:56.503 回答
1

好吧,您对 UTF-8 的“转换”非常可疑。您基本上是在说您比 XML 文件更了解 - 尽管它声称是 ISO-8859-1,但您确实知道它是用 UTF-8 编码的。你有理由相信吗?

如果您知道这些字符的含义,我建议您添加一些日志记录以指示这些字符的 Unicode 值(作为整数),并将它们与Unicode.org 上的代码图表进行比较。然后你会知道你的问题是在显示字符,还是首先从提要中读取它们。

于 2010-01-04T16:09:22.443 回答