如何将 RESTful Web 服务中的“£”作为流返回

Posted

技术标签:

【中文标题】如何将 RESTful Web 服务中的“£”作为流返回【英文标题】:How to return '£' in RESTfull web services as stream 【发布时间】:2013-05-10 22:40:41 【问题描述】:

我正在使用 WCF 开发一个 RESTfull Web 服务。在此服务中,我返回一个包含“£”的 Stream 格式的 XML。我在 XML 中得到了这个符号,但在客户端我得到了“?”而不是“£”。

public Stream HandleMessageStream()
        
            StreamReader reader = new StreamReader(request);
            string text = "<price>£ 10.00</price>";
            UTF8Encoding encoding = new UTF8Encoding();
            MemoryStream ms = new MemoryStream(encoding.GetBytes(text));
            WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";
            return ms;
        

我尝试了不同的编码,但没有找到答案。 谁能帮帮我?

【问题讨论】:

您可以尝试将井号编码为 £或 £ . 尝试将text/html; charset="utf-8"设置为ContentType 客户端如何读取数据?如果它不知道它是 UTF-8,那么这就是你问题的根源。如果客户端正确解释内容类型,I4V 的建议可能会解决问题。 以上建议均无效 我正在使用“发送 HTTP 工具”来调用服务的方法。我正在检查返回的输出。 【参考方案1】:

您是否尝试过使用

Server.HtmlEncode ?

string text = Server.HtmlEncode("<price>£ 10.00</price>");

【讨论】:

只对需要编码的部分进行编码,然后使用Server.HtmlDecode Server.HtmlEncode 方法的命名空间是什么。我不明白。我正在编写 WCFServiceLibrary 类。

以上是关于如何将 RESTful Web 服务中的“£”作为流返回的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net 中创建 RESTful Web 服务?

如何响应 RESTful Web 服务中的备用 URI

访问 RESTful Web 服务的最佳身份验证机制

从 PostgreSQL 过程/函数调用 RESTful Web 服务

如何使用 Spring 安全性和 Restful Web 服务验证数据库中的凭据?

RESTful Web 服务中的文件下载