从Web服务返回UTF-8

时间:2010-12-24 01:38:35

标签: xml web-services

上一篇:Returning info from a Web Service

我认为之前的回答是100%有道理的,虽然我已经走出困境,但它仍然失败。

我正在使用的应用程序似乎仍然认为从Web服务返回的内容是ASCII编码的。调试它显示:

<Envelope><Body><ReturnOneResponse><ReturnOneResult>&lt;xml version="1.0" encoding="UTF-8"&gt;&lt;Entry&gt;&lt;Symbol&gt;PACR&lt;/Symbol&gt;&lt;Company&gt;Pacer International, Inc.&lt;/Company&gt;&lt;MarketCap&gt;$229.0M&lt;/MarketCap&gt;&lt;PE&gt;18.7&lt;/PE&gt;&lt;Price&gt;6.56&lt;/Price&gt;&lt;Change&gt;0.42&lt;/Change&gt;&lt;PctChange&gt;6.84%&lt;/PctChange&gt;&lt;YTDChange&gt;107.59%&lt;/YTDChange&gt;&lt;/Entry&gt;</ReturnOneResult></ReturnOneResponse></Body></Envelope>

因此,从Web服务返回的所有内容似乎都会更改为ASCII,并且似乎拒绝读取为UTF-8。

由于我在上面的链接中的上一个代码,我也改变了我的字符串调用:

string value = @"<?xml version=""1.0"" encoding=""utf-8""?>";

但是,这没有用。

还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

我认为问题在于您的字符串被转义的某个地方。 也许如果你使用像Server.HTMLDecode这样的东西来取消你的字符串它将起作用

答案 1 :(得分:0)

您没有说明您在网络服务中使用的语言/系统。但是,仅将XML标头设置为包含编码不会导致数据流以这种方式进行编码。您必须采取一些操作来在写入输出流的位置指定输出编码。

编辑:对于包含XML的SOAP回复,双重转义可能是正常的。否则,SOAP协议很容易被行为不当的SOAP服务破坏。 SOAP信封/主体必须是有效的XML,因此必须对任何嵌入的XML数据进行编码,以防止错误使SOAP信封/正文无效。

你必须在客户端中取消它。