XMLRead.Create(new StringReader)是否提供读取非unicode(BIG5)的功能?

时间:2012-04-24 00:59:19

标签: c# xml windows-phone-7 unicode big5

我正在尝试访问具有BIG5编码段落的网页。检索xml数据后,我使用XMLRead.Create(new StringReader(xmldata))并从reader.Value获取XmlNodeType.Text类型的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开发工作。

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

结果是,在解析XmlReader时,翻译bytes =>字符串已经发生,而foreach(字符串中的字节)遍历错误翻译的字符串的.Net表示。

我没有使用API​​的这些部分,但似乎XmlReader methods mentioned here是检索XML节点后面的原始字节流的那些。