我正在阅读REST Web服务中的XML文件,对其进行解析,并在Uitable视图中显示详细信息。 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);
}

有什么想法在这里发生了什么,以及如何展示重音符号?

有帮助吗?

解决方案

好的,问题现在解决了。看来我的错误是假设StreamReader将处理默认情况下编码的ISO-8859-1。我从:

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