base64和UTF-8编码问题

Geo*_*ge2 0 c# base64 encoding utf-8

我正在编写一个返回byte []的简单Web方法,而byte []由UTF-8编码.我已经调查了相关的WSDL和soap消息,似乎底层的Web服务堆栈将使用base64编码?

由于各种原因,我无法使用或重新编码从UTF-8到base64的返回字节[].有什么想法将base64编码修改为UTF-8编码?

这是我在WSDL中的相关Web方法,SOAP消息和相关类型

Web服务服务器端代码

        [WebMethod]
        public byte[] HelloWorld2()
        {
            return utf8encodedbytes;
        }
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

WSDL中的相关类型

xsd:base64Binary
Run Code Online (Sandbox Code Playgroud)

乔治,提前谢谢

Jon*_*eet 9

我担心你的问题并没有多大意义 - 字节数组不是用UTF-8等文本编码编码的.您通常将UTF-8编码应用于文本以获取字节数组.要以XML格式传输任意字节数组,您应该使用base64.

如果你想传输文本,你应该只返回一个字符串开始.

在进行任何编码之前,原始数据是什么?如果它是一个字节数组,则应该返回一个字节数组,XML应该自动包含base64编码的数据.如果是文本,则应返回一个字符串,让XML处理编码.