【问题标题】:base64 and UTF-8 encoding issuebase64 和 UTF-8 编码问题
【发布时间】:2010-10-09 03:59:25
【问题描述】:

我正在编写一个简单的 Web 方法,它返回 byte[],而 byte[] 由 UTF-8 编码。调查了相关的WSDL和soap消息,好像底层的web服务栈会使用base64编码?

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

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

Web服务服务器端代码

        [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

提前致谢, 乔治

【问题讨论】:

    标签: c# encoding utf-8 base64


    【解决方案1】:

    恐怕您的问题并没有多大意义 - 字节数组未使用 UTF-8 等文本编码进行编码。您通常将 UTF-8 编码应用于 text 以获取字节数组。要在 XML 中传输任意字节数组,您应该使用 base64。

    如果你想传输 text 你应该只返回一个字符串开始。

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

    【讨论】:

      【解决方案2】:

      那么是什么阻止您使用Convert.ToBase64()Convert.FromBase64()?这些函数正是这样做的:将 byte 数组转换为 base64 strings,反之亦然。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 2014-10-18
        • 2013-03-26
        • 1970-01-01
        相关资源
        最近更新 更多