ASP读取Request.QueryString编码的函数代码
2018-09-06 12:24
  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 
测试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) 
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 
%> 
下一篇:构建你的网站新闻自动发布系统之三
文章标题:ASP读取Request.QueryString编码的函数代码
文章链接:http://soscw.com/essay/10289.html