2

我正在尝试访问具有 BIG5 编码段落的网页。检索 xml 数据后,我使用 XMLRead.Create(new StringReader(xmldata)) 并从 XmlNodeType.Text 类型的 reader.Value 中获取 big5 个字符。在 WP 运行时,它不支持 BIG5 编码,所以我必须获取每个字节并转换为 unicode 以便在 WP7 上显示。但是,我从 reader.Value 获得的字节似乎不是我所期望的。例如,第一个汉字是 B5E1。但我得到了FDFD。那是怎么回事?

using (XmlReader reader = XmlReader.Create(new StringReader(xmldata)))  
while (reader.Read())  
    switch (reader.NodeType)  
        case XmlNodeType.Text:
            string s = reader.Value;  
            foreach (byte input in s)  
                # the input gives unexpected result  

要加载的网页是http://feeds.feedburner.com/nownews/politic

我正在使用 VS2010 进行 WP7 开发工作。

任何帮助表示赞赏!

4

2 回答 2

1

编码定义如何将字节流转换为 .Net 字符串。由于您无法应用 BIG5 编码,.Net 将选择默认编码或 XML 文件中给定的编码。

结果是,当您解析 XmlReader 时,翻译 bytes=>string 已经发生,并且 foreach(byte in string) 迭代错误翻译字符串的 .Net 表示。

我没有使用 API 的这些部分,但似乎这里提到的 XmlReader 方法是用于检索 XML 节点后面的原始字节流的方法。

于 2012-04-24T10:23:22.467 回答
1

Windows Phone SDK 不支持 BIG5 编码,但如果您需要,请继续使用Silverlight 编码生成器生成编码类。

于 2012-04-24T09:10:26.547 回答