上一篇:Returning info from a Web Service
我认为之前的答案是100%有意义的,我认为我已经走出了困境,但它仍然失败。
我正在使用的一个应用程序似乎仍然认为从web服务返回的内容是ASCII编码的。调试结果显示:
<Envelope><Body><ReturnOneResponse><ReturnOneResult><xml version="1.0" encoding="UTF-8"><Entry><Symbol>PACR</Symbol><Company>Pacer International, Inc.</Company><MarketCap>$229.0M</MarketCap><PE>18.7</PE><Price>6.56</Price><Change>0.42</Change><PctChange>6.84%</PctChange><YTDChange>107.59%</YTDChange></Entry></ReturnOneResult></ReturnOneResponse></Body></Envelope>因此,从web服务返回的所有内容似乎都被更改为ASCII,并且似乎拒绝读取为UTF-8。
由于上面链接中的前一段代码,我还更改了字符串调用:
string value = @"<?xml version=""1.0"" encoding=""utf-8""?>";尽管如此,这还是没有帮助。
还有其他想法吗?
发布于 2010-12-24 09:51:32
我认为问题在于你的字符串在某个地方被转义了。也许如果你使用像Server.HTMLDecode这样的东西来对字符串进行反转义,它就会起作用
发布于 2010-12-24 10:06:40
您没有说明您在web服务中使用的是什么语言/系统。但是,仅将XML标头设置为包含编码并不会导致数据流以这种方式编码。您必须采取一些操作来指定写入输出流的点上的输出编码。
编辑:对于包含XML的SOAP回复,双重转义可能是正常的。否则,SOAP协议很容易被行为不端的SOAP服务破坏。SOAP信封/正文必须是有效的XML,因此必须对任何嵌入的XML数据进行编码,以防止错误导致SOAP信封/正文无效。
您必须在客户端中取消转义它。
https://stackoverflow.com/questions/4523708
复制相似问题