XMLHTTP利用POST发送表单时提交中文的问题
刚才编写了一个小偷程序,突然遇到了一个棘手的问题:当尝试POST中文时,程序无法抓取内容。经过深入调查,发现这个问题与编码有关。就像JavaScript中的escape()函数一样,在vbscript中同样可以使用这个函数来处理中文编码问题。通过简单的调整,发送数据时就可以正常抓取内容了。例如,使用这样的语句完成发送:"A="&escape(A)&""&escape(B)"。一切恢复正常,任务顺利完成!
以下是小偷常用的几个function函数介绍
1. ByteToStr函数:此函数用于将字节转换为字符串。它遍历输入字节串中的每个字节,如果字节的ASCII值小于0x80,则直接转换为字符;否则,它将结合前后两个字节转换为一个字符。具体实现如下:
```vbscript
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
```
2. GetURL函数:此函数用于通过POST方式获取指定URL的内容。它创建了一个Microsoft.XMLHTTP对象,设置请求方法和头部信息,然后发送POST请求并返回响应体内容。为了正确处理响应内容中的中文字符,还使用了ByteToStr函数进行转换。具体实现如下:
```vbscript
Function GetURL(url, PostStr)
Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "POST", url, false , "" , ""
.setRequestHeader "Content-Type","/x--form-urlencoded"
.Send(PostStr)
GetURL = .ResponseBody
End With
Set Retrieval = Nothing
GetURL=ByteToStr(GetURL)
End Function
```
3. RegExpText函数:此函数用于在文本中通过正则表达式匹配并提取特定内容。它使用VBScript的RegExp对象进行模式匹配,并将匹配结果拼接成一个字符串返回。具体实现如下:
```vbscript
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
```
用法示例:假设我们需要从一个网页中提取用户的手机号和卡号归属地信息。我们可以先构造POST请求的数据字符串,然后使用GetURL函数获取网页内容,接着使用RegExpText函数提取卡号归属地信息,最后进行处理并输出。具体实现如下:首先定义POST请求的数据字符串和用于提取内容的正则表达式,然后调用相关函数获取和处理数据。最后使用Response.Write输出提取到的归属地信息,并调用cambrian.render('body')结束程序运行。
编程语言
- XMLHTTP利用POST发送表单时提交中文的问题
- 微信小程序中顶部导航栏的实现代码
- vue 父组件调用子组件方法及事件
- php实现比较两个文件夹异同的方法
- Vue+SpringBoot开发V部落博客管理平台
- JavaScript中校验银行卡号的实现代码
- Node.js中child_process实现多进程
- Asp.Net程序目录下文件夹或文件操作导致Session失效
- js oncontextmenu事件使用详解
- 基于javascript html5实现多文件上传
- 详解Angular-Cli中引用第三方库
- php使用smtp发送支持附件的邮件示例
- Git ssh 配置及使用方法
- 利用10行js代码实现上下滚动公告效果
- php截取中文字符串函数实例
- JQuery属性操作与循环用法示例