Проблема с кодировкой base64 и UTF-8


0

Я пишу простой веб-метод, который возвращает байт [], а байт [] кодируется UTF-8. Я исследовал связанные WSDL и мыльные сообщения, кажется, что основной стек веб-сервисов будет использовать кодировку base64?

По различным причинам я не могу использовать или перекодировать мой возвращаемый байт [] из UTF-8 в base64. Любые идеи по изменению кодировки base64 на кодировку UTF-8?

Вот мой родственные методы веб-, SOAP сообщения и связанные типа в WSDL

веб-службы на стороне сервера код

 [WebMethod] 
     public byte[] HelloWorld2() 
     { 
      return utf8encodedbytes; 
     } 

ответ SOAP

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <HelloWorld2Response xmlns="http://tempuri.org/"> 
     <HelloWorld2Result>base64Binary</HelloWorld2Result> 
    </HelloWorld2Response> 
    </soap:Body> 
</soap:Envelope> 

родственный типа в WSDL

xsd:base64Binary 

заранее, George

9

Ваш вопрос на самом деле не имеет большого смысла. Я боюсь, что байт-массивы не кодируются с помощью кодировок текста, таких как UTF-8. Обычно вы используете кодировку UTF-8 в текст, чтобы получить массив байтов. Чтобы передать произвольные байтовые массивы в XML, вы должны использовать base64.

Если вы хотите перевести текст, вы должны просто вернуть строку для начала.

Каковы исходные данные, прежде чем произойдет какое-либо кодирование? Если это массив байтов, вы должны вернуть массив байтов, и XML должен автоматически содержать данные с кодировкой base64. Если это текст, вы должны вернуть строку и позволить XML справиться с кодировкой.


1

Итак, что мешает вам использовать Convert.ToBase64() и Convert.FromBase64()? Эти функции выполняют именно это: преобразование массива byte в base64 string s и vica versa.