Удаление идентификатора utf-8 (BOM) из ответа, отправленного WCF

#c# #.net #wcf #rest #utf-8

#c# #.net #wcf #остальное #utf-8

Вопрос:

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

Ответ №1:

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

Ответ №2:

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

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

Ответ №3:

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