|
- 这篇文章主要介绍了ASP中实现的URLEncode、URLDecode自定义函数,和ASP自带的server.urlencode是不一样的哦,需要的朋友可以参考下
- 在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错。于是在post前先把它编码,到服务器端再解码,这样问题解决了,但是要是数据很大时估计会很影响速度。
- 虽然ASP中的request会自动解码经过url编码的字符串,但是Request.BinaryRead(Request.TotalBytes)取得post数据时却不会解码,所以要进行解码。
- 下面是我找到的一个ASP中server.urlencode函数的解码函数
- 复制代码代码如下:
- Function URLDecode(enStr)
- dim deStr,strSpecial
- dim c,i,v
- deStr=""
- strSpecial="!""#$%&'()*+,.-_/:;< =>?@[/]^`{|}~%"
- for i=1 to len(enStr)
- c=Mid(enStr,i,1)
- if c="%" then
- v=eval("&h"+Mid(enStr,i+1,2))
- if inStr(strSpecial,chr(v))>0 then
- deStr=deStr&chr(v)
- i=i+2
- else
- v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2))
- deStr=deStr & chr(v)
- i=i+5
- end if
- else
- if c="+" then
- deStr=deStr&" "
- else
- deStr=deStr&c
- end if
- end if
- next
- URLDecode=deStr
- End function
- 再附一个编码函数,这个与server.urlencode不一样之处是:server.urlencode会将html或xml等标签,如
- 也会进行编码,而下面这个函数不会。我是用下面的进行编码,再解码,因为我用post时用xml的。
- 复制代码代码如下:
- private Function URLEncoding(vstrIn)
- strReturn = ""
- For i = 1 To Len(vstrIn)
- ThisChr = Mid(vStrIn,i,1)
- If Abs(Asc(ThisChr)) < &HFF Then
- strReturn = strReturn & ThisChr
- Else
- innerCode = Asc(ThisChr)
- If innerCode < 0 Then
- innerCode = innerCode + &H10000
- End If
- Hight8 = (innerCode And &HFF00)/ &HFF
- Low8 = innerCode And &HFF
- strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
- End If
- Next
- URLEncoding = strReturn
- End Function
复制代码
|
|