Asp classic 经典ASP response.write或response.Binarywrite与chr(0)存在问题

Asp classic 经典ASP response.write或response.Binarywrite与chr(0)存在问题,asp-classic,Asp Classic,我在向响应对象写入文件时遇到问题。该文件是Base64编码的,并通过web服务发送到ASP代码 dim contentType, fileName filename = request("FileName") contentType = request("ContentType") If Not Response.isClientConnected Then Response.end End If Response.buffer = true Response.Clear Respon

我在向响应对象写入文件时遇到问题。该文件是Base64编码的,并通过web服务发送到ASP代码

dim contentType, fileName

filename = request("FileName")
contentType = request("ContentType")
If Not Response.isClientConnected Then
    Response.end
End If
Response.buffer = true
Response.Clear
Response.Addheader "Content-Disposition", "attachment; filename=" & filename
Response.contenttype = contentType

dim oSoapClient
Set oSoapClient = Server.CreateObject("MSSOAP.SoapClient")
oSoapClient.ClientProperty("ServerHTTPRequest") = True
oSoapClient.mssoapinit "http://myWS/test.asmx?WSDL"
dim sRequest, sResponse
sRequest = "<Root><Attachment id=""" & Request("ID") & """/></Root>"          
sResponse = oSoapClient.GetAttachment(sRequest)  
Dim oXML: Set oXML = LoadXMLString(sResponse)

Dim oAttachment
set oAttachment = oXML.SelectSingleNode("/Root/Attachment")
if not oAttachment is nothing then
    Response.Binarywrite(Base64Decode(oAttachment.attributes.getNamedItem("BinaryData").value))

End if
Response.End
dim contentType,文件名
文件名=请求(“文件名”)
contentType=请求(“contentType”)
如果未连接Response.isClient,则
答复:完
如果结束
Response.buffer=true
回答,清楚
Response.Addheader“内容处置”,“附件;文件名=”&filename
Response.contenttype=contenttype
暗淡的客户
设置oSoapClient=Server.CreateObject(“MSSOAP.SoapClient”)
oSoapClient.ClientProperty(“ServerHTTPRequest”)=True
oSoapClient.mssoapinit“http://myWS/test.asmx?WSDL"
模糊的请求、响应
sRequest=“”
sResponse=oSoapClient.GetAttachment(sRequest)
Dim-oXML:Set-oXML=LoadXMLString(sResponse)
模糊附着
设置oAttachment=oXML。选择SingleNode(“/Root/Attachment”)
如果不是的话,那就什么都不是了
Binarywrite(Base64Decode(oAttachment.attributes.getNamedItem(“BinaryData”).value))
如果结束
答复.完
BinaryWrite每隔一个字节添加额外的空字符。将其更改为response.write,它不会放置空字符,但在找到空字符时会终止字符串

我正在寻找一种使用binarywrite而不添加额外null的方法。这是一个字符集问题吗


谢谢

BinaryWrite在这里做了正确的事情。base64解码功能的返回类型是什么?每个字节之间额外的空字符表示UTF-16/UCS-16 unicode数据处理不当

理想情况下,您应该向BinaryWrite发送一个变量,该变量表示暴露IStream或SAFEARRAY的对象。如果发送的变量是字符串,则BinaryWrite会将其作为BSTR接收,BSTR的宽度为16位,对于英语/拉丁语字符集数据,每隔一个字节会显示空/零