百度首页 | 百度空间
 
查看文章
 
在vbscript中实现javascript的escape函数对字符串进行编/解码
2008-04-11 下午 09:52
这几天学习了一下传说中的ajax,先不说别的,在用ajax的XMLHttpRequest对象向服务器端传送数据时,出现了一个让我很郁闷的问题.由于要传送中文数据,明文传送会出现乱码,网上的很多人说发送数据前先发送http头,设置好传送数据的编码,但是我整了半天没发现这好使,于是就寻求其他解决方法,接着看到很多人是在数据发送前将字符串用javascript的escape函数进行处理,然后服务器端处理程序再进行解码,然后又出现问题了,我学的是asp(Active Server Page),习惯用vbscript编写处理程序,但是vbscript没有如能实现javascript中escape函数功能的函数,后来在网上找了一下,有一位前辈写了类似javascript中escape和unescape两个函数的函数,帮我解决了这个问题,不胜感激,函数如下:
'escape时不变的7个符号: *(42) +(43) -(45) .(46) /(47) @(64) _(95)
Function vbsEscape(str)
    dim i,s,c,a
     s=""
    For i=1 to Len(str)
         c=Mid(str,i,1)
         a=ASCW(c)
        If (a>=48 and a<=57) or (a>=65 and a<=90) or (a>=97 and a<=122) Then
             s = s & c
        ElseIf InStr("@*_+-./",c)>0 Then
             s = s & c
        ElseIf a>0 and a<16 Then
             s = s & "%0" & Hex(a)
        ElseIf a>=16 and a<256 Then
             s = s & "%" & Hex(a)
        Else
             s = s & "%u" & Hex(a)
        End If
    Next
     vbsEscape = s
End Function
Function vbsUnEscape(str)
    dim i,s,c
     s=""
    For i=1 to Len(str)
         c=Mid(str,i,1)
        If Mid(str,i,2)="%u" and i<=Len(str)-5 Then
            If IsNumeric("&H" & Mid(str,i+2,4)) Then
                 s = s & CHRW(CInt("&H" & Mid(str,i+2,4)))
                 i = i+5
            Else
                 s = s & c
            End If
        ElseIf c="%" and i<=Len(str)-2 Then
            If IsNumeric("&H" & Mid(str,i+1,2)) Then
                 s = s & CHRW(CInt("&H" & Mid(str,i+1,2)))
                 i = i+2
            Else
                 s = s & c
            End If
        Else
             s = s & c
        End If
    Next
     vbsUnEscape = s
End Function

类别:asp编程 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu