写错了,呵呵Function bytes2BSTR(vIn) 
strReturn = "" 
For i = 1 To LenB(vIn) 
ThisCharCode = AscB(MidB(vIn,i,1)) 
If ThisCharCode < &H80 Then 
strReturn = strReturn & Chr(ThisCharCode) 
Else 
NextCharCode = AscB(MidB(vIn,i+1,1)) 
strReturn = strReturn & Chr (CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 
i = i + 1 
End If 
Next 
bytes2BSTR = strReturn 
End Function

解决方案 »

  1.   

    为什么??我代码
    $oSend = new COM("Microsoft.XMLHTTP");
    $SourceCode = $oSend->open("GET",$url,false) ;
    $oSend->send();
    $SourceCode = $oSend->responseBody; $ThisCharCode = implode(' ',$SourceCode);如果用$strReturn=base64_decode($ThisCharCode);
    $strReturn得到的全是乱码...
      

  2.   

    你用xmlhttp控件的responseBody方法返回的是一个数组,其每一个元素都是一个整数(字符内码的十进制表示)
    只需
    foreach($SourceCode as $v)
      echo chr($v);
    即可
      

  3.   

    那这个判断是什么意思呢?
    If ThisCharCode < &H80 Then 
    strReturn = strReturn & Chr(ThisCharCode) 
    Else 
    NextCharCode = AscB(MidB(vIn,i+1,1)) 
    strReturn = strReturn & Chr (CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 
    i = i + 1 
    End If
      

  4.   

    搜索而得,去asp问一下,也许会更清楚
    这是二进制转换为普通字符串函数,看这儿吧,不过
    http://www.6to23.com/s11/s11d5/2001816171348.htm
    '把二进制字符串转换成普通字符串函数 
    Function bin2str(binstr) 
      Dim varlen,clow,ccc,skipflag 
      '中文字符Skip标志 
      skipflag=0 
      ccc = "" 
      If Not IsNull(binstr) Then 
       varlen=LenB(binstr) 
       For i=1 To varlen 
         If skipflag=0 Then 
           clow = MidB(binstr,i,1) 
           '判断是否中文的字符 
           If AscB(clow) > 127 Then 
            'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转 
            ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow)) 
            skipflag=1 
           Else 
            ccc = ccc & Chr(AscB(clow)) 
           End If 
         Else 
           skipflag=0 
         End If 
       Next 
      End If 
      bin2str = ccc 
    End Function