Привет, ребята, у меня есть веб-сервис , возвращающий XML ответ в виде потока , это строка, которую позже я конвертирую в поток памяти, прежде чем возвращать ее в качестве ответа. Проблема в том, что в строке есть некоторые китайские символы, которые отлично работают, если мой тип возвращаемого сервиса - обычная строка, но они показывают символы мусора , если я конвертирую их в поток, а затем выбираю поток в качестве возвращаемого типа.
Stream strmResponse = new MemoryStream(Encoding.UTF8.GetBytes(xmlstringResponse));
приведенный выше код преобразует все китайские символы в символы мусора, и я получаю такой ответ. изменение кодировки в ASCII просто заменит китайские символы на "??"
<data contentType="application/octet-stream" contentLength="1808"><![CDATA[<MESSAGE_BODY><RESPONSE><RESULT>�功</RESULT></RESPONSE></MESSAGE_BODY>]]></data>
, однако правильным китайским языком будет "成功" , что означает успех. Ниже приведена подпись моего метода
[WebInvoke(Method = "POST", UriTemplate = "SendDCFileResponse", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
Stream SendDCFileResponse(Stream xmlParam);
изменение типа возвращаемого значения на «строка» заставит все работать , но использование потока - это требование для меня. Я проверил свою привязку, и это basicHttpBinding, что означает, что он поддерживает UTF8 по умолчанию, но я явно указал UTF-8 в качестве типа содержимого, но мне не повезло. Пожалуйста, помогите мне.