从Web服务输出中清除ASCII控制字符
|
我从最近使用的Web服务接收到的某些文本遇到了一些困难。该Web服务发送回XML,这很好,但是我们在某些XML的中间获取了ASCII控制字符。我想在此帖子中粘贴一个示例,但由于字符无效,我什至无法将其粘贴到此textarea中。
我花了一些时间研究在这些情况下的处理方法,然后发现了这篇翔实的文章:http://seattlesoftware.wordpress.com/2008/09/11/hexadecimal-value-0-is-an-invalid-character/。这是相关文章的引文:
这些不是具有任何字符的字符
XML数据中的业务;他们是
应该是非法字符
移除...
因此,按照本文的建议,我编写了一些代码以从此服务中获取原始输出,并剥去它是控制字符的任何字符(并且不是空格,制表符,cr或lf)
这是该代码:
System.Net.WebClient client = new System.Net.WebClient();
byte[] invalidCharacters = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0xB,
0xC, 0xE, 0xF, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16,
0x17, 0x18, 0x1A, 0x1B, 0x1E, 0x1F, 0x7F };
byte[] sanitizedResponse = (from a in client.DownloadData(url)
where !invalidCharacters.Contains(a)
select a).ToArray();
result = System.Text.UTF8Encoding.UTF8.GetString(sanitizedResponse);
这让我思考。如果我收到双字节字符,我会弄乱我返回的任何数据吗?对于某些代码页来说,由一个或两个单字节ASCII控制字符组成的双字节字符是否有效?这篇文章说这些字符在XML数据中有\“ no business \\”听起来很确定,但我想再说一遍。
感谢任何反馈
没有找到相关结果
已邀请:
2 个回复
部窖空
而不是
(并依靠
选择正确的编码),但是在解析之前先使用正则表达式清除数据它。 我还将与网络服务提供商联系,以说明他们正在提供Duff XML。
玖料萄