Я создаю некоторое приложение для чтения OPDS в C # на WP7, в то время как я обнаружил странное поведение (по крайней мере, странное для меня).OPDS - это XML на основе Atom, и я использую библиотеку RestSharp, которая предоставляет некоторый десериализатор XML.Большинство каналов загружаются и анализируются правильно.Но там, где есть некоторые исключения при разборе определенных каналов.
Я немного исследовал причину возникновения исключения и обнаружил следующее:
Исключение происходит на этих страницах (например):
Когда я скопировал код этих XML-файлов, вставил его в Notepad ++ и применил Tidy: reindentФункция XML для этого вставленного кода, Блокнот / Tidy сообщил о некоторых ошибках.Когда я посмотрел, где произошли ошибки, это было обычно на некоторых символах ударения (или акцентированных символах).
Конкретно: в первой ссылке в строке 161 столбца 26 есть ошибка *, это слово Что такое , в частности, апострофоподобный символ.
Когда я посмотрел, что действительно загружено (через Wireshark), между символом 't' и символом 's' есть три байта.Значения этих байтов в шестнадцатеричном формате: { e2 , 80 , 99 }.Ни один из них не является чем-то похожим на символ апостроф.
Могу поспорить, что это является причиной проблемы синтаксического анализа, но я на самом деле не понимаю.
Какое преобразование делает мой браузер (Opera)?
- Opera показывает фид 'ok',
- показывает четный код 'ok',
- , но копирует оригинальные байты,
- и Tidy Notepad "сбой" на них.
Может кто-нибудь прояснить это для меня.Может быть, я что-то упускаю из кодировки ...?(вопрос не только о решении WP7, но и об общей кодировке символов)