Удаление идентификатора utf-8 (BOM) из ответа, отправленного WCF - PullRequest
3 голосов
/ 10 ноября 2011

Я создаю клон Facebook Rest API в c #, я тестирую его с помощью Facebook PHP SDK.Проблема, с которой я сталкиваюсь, заключается в том, что ответы, отправленные моей сетевой службой отдыха, содержат перед собой utf-8 Bom, а Facebook SDK не может правильно проанализировать ответы.Любые идеи о том, как решить эту проблему.

Ответы [ 3 ]

3 голосов
/ 10 ноября 2011

Если вы можете указать конкретный Encoding для вашего сервиса, то вы можете использовать new UTF8Encoding(false), который является UTF-8 без спецификации.

2 голосов
/ 18 мая 2015

Я не знаю, что вы возвращаете в своем сервисе, но если это строка, подобная моей (я возвращал json), вы можете просто вернуть объект Message вместо строки в нем (из System.ServiceModel .Channels - Google google), а затем в конце реализации метода обслуживания просто сделайте это:

Encoding utf8 = new System.Text.UTF8Encoding(false); //false == no BOM
return WebOperationContext.Current.CreateTextResponse(stringWithContent, "application/json;charset=utf-8", utf8);
0 голосов
/ 10 ноября 2011

В статье Wikipedia UTF-8 указывается, что специальная спецификация, которую приложения Windows часто добавляют к фактическому контенту, имеет длину три байта. Не могли бы вы просто не отправить первые три байта вашего сгенерированного контента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...