【问题标题】:Removing utf-8 identifier (BOM) from Response Sent by WCF从 WCF 发送的响应中删除 utf-8 标识符 (BOM)
【发布时间】:2011-11-10 00:47:47
【问题描述】:

我正在 c# 中创建 facebook Rest API 的克隆,我正在使用 facebook PHP sdk 对其进行测试。我遇到的问题是我的 net Rest Service 发送的响应前面包含 utf-8 Bom,而 Facebook SDK 无法正确解析响应。 有关如何解决此问题的任何想法。

【问题讨论】:

    标签: c# .net wcf rest utf-8


    【解决方案1】:

    如果您可以为您的服务指定特定的Encoding,那么您可以使用new UTF8Encoding(false),它是不带BOM 的UTF-8。

    【讨论】:

      【解决方案2】:

      我不知道您在服务中返回什么,但如果它是像我这样的字符串(我返回的是一个 json),您可以简单地返回一个带有字符串的 Message 对象(来自 System.ServiceModel .Channels - google it)然后在你的服务方法实现结束时这样做:

      Encoding utf8 = new System.Text.UTF8Encoding(false); //false == no BOM
      return WebOperationContext.Current.CreateTextResponse(stringWithContent, "application/json;charset=utf-8", utf8);
      

      【讨论】:

        【解决方案3】:

        The Wikipedia UTF-8 article 建议 Windows 应用程序经常附加到实际内容的假 BOM 是三个字节长。您可以不发送生成内容的前三个字节吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-21
          • 2017-12-27
          • 1970-01-01
          • 2012-02-08
          • 1970-01-01
          • 2012-09-12
          • 2012-05-04
          相关资源
          最近更新 更多