XMLHTTP利用POST发送表单时提交中文的问题 |
刚才写一个小偷程序,突然发现一旦POST中文时抓取不到内容,考虑到中文编码问题,像javascript中的escape()一样,在vbscript中也可以使用这个函数,只需要这个发送就可以正常抓取到内容了send("A="&escape(A)&""&escape(B)) 完成收工! 附几个小偷常用的function函数 Function ByteToStr(vIn) Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode 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 ByteToStr = strReturn End Function Function GetURL(url,PostStr) Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "POST", url, false ,"" ,"" .setRequestHeader "Content-Type","application/x-www-form-urlencoded" .Send(PostStr) GetURL = .ResponseBody End With Set Retrieval = Nothing GetURL=ByteToStr(GetURL) End Function Function RegExpText(strng,regStr) Dim regEx,Match,Matches,RetStr Set regEx = New RegExp regEx.Pattern = regStr regEx.IgnoreCase = True regEx.Global = True Set Matches = regEx.Execute(strng) For Each Match in Matches RetStr = RetStr & Match.Value & "," Next RegExpText = RetStr set regEx=nothing End Function 用法: Dim PostStr,getContent,getArea PostStr = "action=mobile&mobile="&MobileNumber getContent = GetURL("http://www.ip138.com:8080/search.asp",PostStr) getArea = Replace(Replace(Replace(RegExpText(getContent,"卡号归属地</TD>((.|\n)*?)</TD>"),"卡号归属地</TD>",""),"<TD width=* align=""center"" class=tdc2>",""),"</TD>,","") Response.Write(getArea) |