ASP中实现的URLEncode、URLDecode自定义函数
程序员文章站
2022-04-15 10:32:57
在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错。于是在pos...
在做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