支持中文的URLDecode ASP函数
成功志
支持中文的URLDecode ASP函数
2012-1-7 ok12

1、这一部分是不支持中文的UrlDecode转换函数


<%

Function URLDecode(sConvert)

Dim aSplit

Dim sOutput

Dim I

If IsNull(sConvert) Then

URLDecode = ""

Exit Function

End If

' convert all pluses to spaces

sOutput = REPLACE(sConvert, "+", " ")

' next convert %hexdigits to the character

aSplit = Split(sOutput, "%")

If IsArray(aSplit) Then

sOutput = aSplit(0)

For I = 0 to UBound(aSplit) - 1

sOutput = sOutput & _

Chr("&H" & Left(aSplit(i + 1), 2)) &_

Right(aSplit(i + 1), Len(aSplit(i + 1)) - 2)

Next

End If

URLDecode = sOutput

End Function

%>


2、这一部分是支持转换中文的Asp UrlDecode函数


<%

function URLDecode(strIn)

URLDecode = ""

Dim sl: sl = 1

Dim tl: tl = 1

Dim key: key = "%"

Dim kl: kl = Len(key)

sl = InStr(sl, strIn, key, 1)

Do While sl>0

If (tl=1 And sl<>1) Or tl<sl Then

URLDecode = URLDecode & Mid(strIn, tl, sl-tl)

End If

Dim hh, hi, hl

Dim a

Select Case UCase(Mid(strIn, sl+kl, 1))

Case "U":'Unicode URLEncode

a = Mid(strIn, sl+kl+1, 4)

URLDecode = URLDecode & ChrW("&H" & a)

sl = sl + 6

Case "E":'UTF-8 URLEncode

hh = Mid(strIn, sl+kl, 2)

a = Int("&H" & hh)'ascii码

If Abs(a)<128 Then

sl = sl + 3

URLDecode = URLDecode & Chr(a)

Else

hi = Mid(strIn, sl+3+kl, 2)

hl = Mid(strIn, sl+6+kl, 2)

a = ("&H" & hh And &H0F) * 2 ^12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl

And &H3F)

If a<0 Then a = a + 65536

URLDecode = URLDecode & ChrW(a)

sl = sl + 9

End If

Case Else:'Asc URLEncode

hh = Mid(strIn, sl+kl, 2)'高位

a = Int("&H" & hh)'ascii码

If Abs(a)<128 Then

sl = sl + 3

Else

hi = Mid(strIn, sl+3+kl, 2)'低位

a = Int("&H" & hh & hi)'非ascii码

sl = sl + 6

End If

URLDecode = URLDecode & Chr(a)

End Select

tl = sl

sl = InStr(sl, strIn, key, 1)

Loop

URLDecode = URLDecode & Mid(strIn, tl)

End function

%>

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容