欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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