您当前的位置: 首页 » asp编程学习 » ASP读取Request.QueryString编码的函数 

ASP读取Request.QueryString编码的函数 

1. 支持参数纯汉字 ?a=深山老熊
2. 支持参数gb2312 Urlencode编码: ?a=%C9%EE%C9%BD%C0%CF%D0%DC
3. 支持参数UTF-8 Urlencode编码: ?a=%E6%B7%B1%E5%B1%B1%E8%80%81%E7%86%8A
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Option Explicit
Const YXCMS_CHARSET  = "UTF-8"          
Const YXCMS_CODEPAGE = 65001
Response.CharSet = "UTF-8"
Session.CodePage = 65001

'测试URL

'?n1=深山老熊&n2=%C9%EE%C9%BD%C0%CF%D0%DC&n3=%E6%B7%B1%E5%B1%B1%E8%80%81%E7%86%8A

'深山老熊
'GBK : %C9%EE%C9%BD%C0%CF%D0%DC
'UTF-8 : %E6%B7%B1%E5%B1%B1%E8%80%81%E7%86%8A

Dim URI,key

Set URI = new Cls_URI

'输出所有参数测试
For Each key In URI.QueryString
       Response.Write "<span style='color:red'>" & key & " : </span>" & URI.Get(key) & "<hr/>"
Next

'取单个值

'URI.Get("名称")

'--------------------------------------------
'ASP UTF-8编码下通吃 GBK UTF-8编码
'作者: 深山老熊 QQ:81090
'--------------------------------------------
Class Cls_URI
       Private o_item,o_regx
       Private url_query

       Private Sub Class_Initialize
              Set o_item = CreateObject("Scripting.Dictionary")
              o_item.CompareMode = 1 
              Set o_regx = New Regexp 
              o_regx.Pattern = "^(?:[\x00-\x7f]|[\xfc-\xff][\x80-\xbf]{5}|[\xf8-\xfb][\x80-\xbf]{4}|[\xf0-\xf7][\x80-\xbf]{3}|[\xe0-\xef][\x80-\xbf]{2}|[\xc0-\xdf][\x80-\xbf])+$"
              Session.CodePage = 936
              url_query = Request.ServerVariables("QUERY_STRING")
              Session.CodePage = 65001
              '根据QUERY_STRING字符串,生成模拟QueryString值
              Dim i,a,b,c,n,v
              a = Split(url_query,"&")  : c = UBound(a)
              For i = 0 To c
                     b = Split(a(i),"=",2)
                     n = Trim(b(0) & ""
                     If UBound(b) < 1 Then 
                            v = ""
                     Else
                            v = b(1)
                            If InStr(v,"%") > 0 Then v = URLDecode(v)
                     End If 
                     If n <> "" Then 
                            o_item(n) = v
                     End If 
              Next
              Set o_regx = Nothing 
       End Sub

       Private Sub Class_Terminate
              Set o_item = Nothing               
       End Sub

       '模拟 Request.QueryString
       Public Function QueryString()
              Set QueryString = o_item
       End Function 

       '模拟 Request.QueryString(n)
       Public Function [GET](n)
              If o_item.Exists(n) Then 
                     [GET] = o_item.Item(n)
              Else
                     [GET] = ""
              End If 
       End Function 

       '编码格式化
       Private Function URLDecode(ByVal s)   
              Dim sm,cs,r,o_regex
              If Trim(s & "") = "" Then 
                     URLDecode = s : Exit Function 
              End If 
              s = unescape(s)   
              If o_regx.Test(s) Then 
                     cs = "UTF-8"
              Else
                     cs = "GBK"
              End If 
              Set sm = CreateObject("Adodb.Stream")
              With sm   
                     .Type = 2   
                     .Mode = 3   
                     .Open   
                     .CharSet = "ISO-8859-1"  
                     .WriteText s   
                     .Position = 0   
                     .CharSet  = cs   
                     URLDecode = .ReadText(-1)   
                     .Close   
              End With  
              Set sm = Nothing  
       End Function  

End Class 



%>
留下脚印压缩包密码:sosuo8
名字:
全部评论:
loading...
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“ ASP读取Request.QueryString编码的函数  ”的原作者,若侵犯您的版权,请与我联系!联系方法:email:ahuinan@21cn.com  QQ:106494262
文章档案
  • 作者:cnbjx
  • 来源:经典论坛
  • 日期:2011/4/16 10:21:00
  • 点击:loading...
网友投票(您觉得这篇文章怎样?)
loadding...请稍侯......