【发布时间】:2011-11-10 00:47:47
【问题描述】:
我正在 c# 中创建 facebook Rest API 的克隆,我正在使用 facebook PHP sdk 对其进行测试。我遇到的问题是我的 net Rest Service 发送的响应前面包含 utf-8 Bom,而 Facebook SDK 无法正确解析响应。 有关如何解决此问题的任何想法。
【问题讨论】:
我正在 c# 中创建 facebook Rest API 的克隆,我正在使用 facebook PHP sdk 对其进行测试。我遇到的问题是我的 net Rest Service 发送的响应前面包含 utf-8 Bom,而 Facebook SDK 无法正确解析响应。 有关如何解决此问题的任何想法。
【问题讨论】:
如果您可以为您的服务指定特定的Encoding,那么您可以使用new UTF8Encoding(false),它是不带BOM 的UTF-8。
【讨论】:
我不知道您在服务中返回什么,但如果它是像我这样的字符串(我返回的是一个 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);
【讨论】:
The Wikipedia UTF-8 article 建议 Windows 应用程序经常附加到实际内容的假 BOM 是三个字节长。您可以不发送生成内容的前三个字节吗?
【讨论】: