지금 바로:
공백이있는 경우 대신 %20을 사용하십시오. 다른 문자가있는 경우 %ASCII를 대신 사용하십시오. 한자와 같은 4 바이트 문자가있는 경우 대신 2 %ASCII를 사용하십시오. 그러나 때때로 우리는 이런 방식으로 인코딩 된 문자열을 해독해야하지만 ASP는 관련 기능을 제공하지 않으므로 문제를 다루는 데 약간의 문제가 발생합니다. 실제로 인코딩 규칙을 아는 한 ASP 코드를 사용하여 자체 URLDECODE 기능을 구현할 수 있습니다.
특정 구현은 다음과 같습니다.
코드 사본은 다음과 같습니다.
functionurldecode (encodest)
Newsstr = ""
havechar = false
lastchar = ""
fori = 1tolen (encodest)
char_c = mid (encodest, i, 1)
ifchar_c = "+"그런 다음
Newsstr = Newstr & ""
그렇다면 elseifchar_c = "%"
next_1_c = mid (encodest, i+1,2)
next_1_num = cint ( "& h"& next_1_c)
ifhavecharthen
havechar = false
Newsstr = Newstr & Chr (Cint ( "& H"& Lastchar & Next_1_C)))
또 다른
ifabs (next_1_num) <= 127then
Newsstr = Newstr & Chr (next_1_num)
또 다른
havechar = true
Lastchar = next_1_c
endif
endif
i = i+2
또 다른
Newsstr = Newstr & Char_c
endif
다음
urldecode = Newstr
최종 기능 장애
다음은 더 성숙한 기능입니다.
코드 사본은 다음과 같습니다.
'================================================================================
'기능 이름 : urldecode
'기능 : URL 디코딩
'================================================================================
함수 urldecode (byval urlcode)
Dim Start, Final, Length, Char, I, Butf8, Pass
Dim Leftstr, Rightstr, FinalStr
Dim B0, B1, BX, Blength, 위치, U, UTF8
다음에 오류가 재개됩니다
B0 = 배열 (192,224,240,248,252,254)
urlcode = replace (urlcode, "+", "")
패스 = 0
UTF8 = -1
length = len (urlcode) : start = inst (urlcode, "%") : final = instrev (urlcode, "%")
시작 = 0 또는 길이 <3 인 경우 urldecode = urlcode : 종료 함수
leftstr = left (urlcode, start -1) : rightstr = right (urlcode, 길이 -2- 최종)
i = 마지막으로 시작하십시오
char = mid (urlcode, i, 1)
char = "%"인 경우
bx = urldecode_Hex (MID (urlcode, i + 1,2))
BX> 31 및 BX <128 인 경우
i = i + 2
FinalStr = FinalStr & Chrw (BX)
elseif bx> 127 그러면
i = i + 2
UTF8 <0이면
butf8 = 1 : blength = -1 : b1 = bx
위치 = 4 ~ 0 단계 -1
B1> = B0 (위치) 및 B1 <B0 (위치 + 1) 인 경우
blength = 위치
종료
끝 If
다음
Blength> -1이면
위치 = 0에서 blength
b1 = urldecode_hex (mid (urlcode, i + position * 3 + 2,2))
B1 <128 또는 B1> 191 인 경우 butf8 = 0 : 종료
다음
또 다른
butf8 = 0
끝 If
butf8 = 1이고 blength = 0이면 butf8 = -2
BUTF8> -1 및 utf8 = -2 인 경우 i = start -1 : finalStr = "": pass = 1