从WCF发送的响应中删除utf-8标识符(BOM)

时间:2011-11-10 00:47:48

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

我在c#中创建了facebook Rest API的克隆,我正在使用facebook PHP sdk进行测试。我遇到的问题是我的网络休息服务发送的响应包含utf-8 Bom,Facebook SDK无法正确解析响应。 关于如何解决这个问题的任何想法。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我不知道你在服务中返回了什么,但是如果它是像我一样的字符串(我正在返回一个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);

答案 2 :(得分:0)

The Wikipedia UTF-8 article表明Windows应用程序经常预装到实际内容的假装BOM是三个字节长。你能不能简单地发送你生成的内容的前三个字节?