我在WP7上用C#创建一些OPDS阅读器应用程序,而我发现了奇怪的行为(至少对我来说很奇怪)。 OPDS是基于Atom的XML,我使用的是RestSharp库,它提供了一些XML反序列化器。大多数Feed都是正确下载和解析的。但是在解析某些提要时会出现一些异常。
我调查了一下为什么会发生异常,并发现了这个:
这些页面上发生异常(例如):
当我复制这些XML的代码时,将其粘贴到Notepad ++中并在粘贴的代码上应用 Tidy:reindent XML 函数,Notepad / Tidy报告了一些错误。当我查看错误发生的位置时,通常是一些重音字符(或重音字符)。
具体一点:在第一个链接上,第161行第26列出现错误,即什么是,特别是类似撇号的字符。
当我查看真正下载的内容(通过Wireshark)时,char't'和char'之间有三个字节。这些十六进制字节的值为{e2,80,99}。它们都不类似于撇号char。
我敢打赌这是解析问题的原因,但我真的不明白。
我的浏览器(Opera)正在做什么转换?
有人可以为我清楚这一点。也许我遗漏了一些关于编码的基本内容......? (问题不是关于WP7解决方案,而是关于字符的一般编码)
答案 0 :(得分:0)
e28099是Unicode字符'RIGHT SINGLE QUOTATION MARK'(U + 2019),以UTF-8编码。没什么特别的,很直接的。我不熟悉您正在使用的工具,但请确保在接收原始字节流和XML解析器/解串器之间没有任何干预。任何体面的解析器都应该能够处理这些提要和它们使用的编码;我会更仔细地查看工具链的设置。
答案 1 :(得分:0)
你的问题可能与这些不是有效的ATOM提要有关吗?
W3C验证器中的结果显示无效:
http://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fpragprog.com%2Fmagazines.opds