淘先锋技术网

首页 1 2 3 4 5 6 7

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

复制代码 代码如下:

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 "" & key & " : " & URI.Get(key) & "


"

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

%>相关阅读:

js function使用心得

关于JavaScript 的事件综合分析

Win XP远程控制时如何保证安全

SQL命令大全-中英文对照

MySQL中文参考手册--连接与断开服务者

从MySQL得到最大的性能

CSS教程:制作圆角矩形的网站头像

IE漏洞攻击剧增 最新/CSS/c.js木马防范手记

开启CURL扩展,让服务器支持PHP curl函数(远程采集)

Linux下Openoffice乱码的解决方法

IE6 position:fixed bug (固定窗口方法)

调整重心-从IIS到SQL Server数据库安全

Javascript 中截取小数位并实现四舍五入的方法

Mysql 自动增加设定基值的语句