URL 디코딩 기능은 간단하고 이해하기 쉽습니다. 주된 이유는 원본 중국어가 URL 인코딩되어 있기 때문입니다. 구체적으로 사용할 경우 중국어로 복원해야 하므로 이러한 기능이 필요합니다. 예를 들어:
Baidu에서 Script Home을 검색하면 URL 뒤의 매개변수는 다음과 같습니다.
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
%BD%C5%B1%BE%D6%AE%BC%D2를 중국어로 복원하려면 다음 기능을 사용하세요.
<%
response.write urldecode(http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
'===============================================
'함수 이름: URLDecode
'기능: URL 디코딩
'===============================================
기능 URLDecode(ByVal urlcode)
희미한 시작, 최종, 길이, 문자, i, butf8, 통과
희미한 왼쪽 str, 오른쪽 str, finalstr
희미한 b0,b1,bx,blength,위치,u,utf8
오류 발생 시 다음 재개
b0 = 배열(192,224,240,248,252,254)
urlcode = 바꾸기(urlcode,+, )
통과 = 0
utf8 = -1
길이 = Len(urlcode) : 시작 = InStr(urlcode,%) : 최종 = InStrRev(urlcode,%)
start = 0 또는 length < 3이면 URLDecode = urlcode : 함수 종료
leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - final)
i = 시작부터 끝까지
char = Mid(urlcode,i,1)
char = %Then이면
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
bx > 31이고 bx < 128이면
나는 = 나는 + 2
finalstr = finalstr & ChrW(bx)
ElseIf bx > 127 Then
나는 = 나는 + 2
utf8 < 0이면
butf8 = 1 : blength = -1 : b1 = bx
위치 = 4에서 0으로 단계 -1
b1 >= b0(위치) 및 b1 < b0(위치 + 1)인 경우 그러면
길이 = 위치
종료 대상
종료 조건
다음
blength > -1이면
위치 = 0의 경우 길이를 늘리려면
b1 = URLDecode_Hex(Mid(urlcode,i + 위치 * 3 + 2,2))
b1 < 128 또는 b1 > 191이면 butf8 = 0: 종료
다음
또 다른
하지만f8 = 0
종료 조건
butf8 = 1이고 blength = 0이면 butf8 = -2
butf8 > -1 그리고 utf8 = -2이면 i = start - 1 : finalstr = : pass = 1
utf8 = butf8
종료 조건
통과 = 0이면
utf8 = 1이면
b1 = bx : u = 0 : blength = -1
위치 = 4에서 0으로 단계 -1
b1 >= b0(위치) 및 b1 < b0(위치 + 1)인 경우 그러면
길이 = 위치
b1 = (b1 xOr b0(위치)) * 64 ^ (위치 + 1)
종료 대상
종료 조건
다음
blength > -1이면
위치 = 0의 경우 길이를 늘리려면
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3
bx < 128 또는 bx > 191이면 u = 0: 종료
u = u + (bx And 63) * 64 ^ (blength - 위치)
다음
u > 0이면 finalstr = finalstr & ChrW(b1 + u)
종료 조건
또 다른
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
bx > 0이면
당신 = b1 + bx
나는 = 나는 + 3
또 다른
Left(urlcode,1) = %이면 다음
u = b1 + Asc(Mid(urlcode,i + 3,1))
나는 = 나는 + 2
또 다른
u = b1 + Asc(Mid(urlcode,i + 1,1))
나는 = 나는 + 1
종료 조건
종료 조건
finalstr = finalstr & Chr(u)
종료 조건
또 다른
통과 = 0
종료 조건
종료 조건
또 다른
finalstr = 최종 문자열 및 문자
종료 조건
다음
URLDecode = leftstr & finalstr & rightstr
기능 종료
함수 URLDecode_Hex(ByVal h)
오류 발생 시 다음 재개
h = &h & Trim(h) : URLDecode_Hex = -1
Len(h) <> 4이면 함수 종료
isNumeric(h)이면 URLDecode_Hex = cInt(h)
기능 종료
%>