Делает XMLRead.Create (new StringReader) обеспечивает возможность чтения не-unicode (BIG5)?


Я пытаюсь получить доступ к веб-странице, которая имеет кодировку BIG5. После извлечения xml-данных я использую XMLRead.Создайте (new StringReader (xmldata)) и получите символы big5 из reader.Значение XmlNodeType.Тип текста. В WP runtime он не поддерживает кодировку BIG5, поэтому мне нужно получить каждый байт и преобразовать его в unicode для отображения на WP7. Однако байт я получаю от читателя.Ценность кажется не такой, как я ожидал. Например, первый китайский иероглиф-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 2

2 ответа:

Windows Phone SDK не поддерживает кодировку BIG5, но если вам это нужно, просто создайте класс кодировки с помощью генератора кодировки Silverlight.

Кодировка определяет, как поток байтов преобразуется в строку .Net. Поскольку вы не можете применить кодировку BIG5, .Net выберет либо кодировку по умолчанию, либо кодировку, указанную в XML-файле.

Результат состоит в том, что при синтаксическом анализе XmlReader перевод bytes=>string уже состоялся, и foreach(байт в строке) повторяет представление .Net неправильно переведенной строки.

Я не работал с этими частями API, но похоже, что методы XmlReader, упомянутые здесь , являются теми, которые извлекают исходный поток байтов за узлом XML.