ACTIVE SERVER PAGE > URLEncode - ANSI - 인코딩 하자. URLEcode 함수
등록일 : 2017-07-04 17:48
조회수 : 93,207
ASP에서 숫자, 알파벳 문자가 아닌 것(0~9, a~z이 아닌 문자)을 아스키 헥사 코드로 변환시켜주는 메쏘드가 있다.
그것은 바로 Server.UrlEncode이다.
이번시간에는 이 함수를 사용하지 않고 다른 함수를 이용해서 URL 인코딩 해보자.
대상문자열
http://ankyu.entersoft.kr/default.asp?id=123&usr=ankyu&key=엔터소프트
Server.URLEncode() 사용 예
http%3A%2F%2Fankyu%2Eentersoft%2Ekr%2Fdefault%2Easp%3Fid%3D123%26usr%3Dankyu%26key%3D%BF%A3%C5%CD%BC%D2%C7%C1%C6%AE
URLEncode() 함수 사용 예
http%3A%2F%2Fankyu.entersoft.kr%2Fdefault.asp%3Fid%3D123%26usr%3Dankyu%26key%3D%BF%A3%C5%CD%BC%D2%C7%C1%C6%AE
Public Function URLEncode(URLStr)
Dim sURL '** 입력받은 URL 문자열
Dim sBuffer '** Encoding 중의 URL 을 담을 Buffer 문자열
Dim sTemp '** 임시 문자열
Dim cChar '** URL 문자열 중의 현재 Index 의 문자
Dim Index
On Error Resume Next
Err.Clear
sURL = Trim(URLStr) '** URL 문자열을 얻는다.
sBuffer = "" '** 임시 Buffer 용 문자열 변수 초기화.
'******************************************************
'* URL Encoding 작업
'******************************************************
For Index = 1 To Len(sURL)
'** 현재 Index 의 문자를 얻는다.
cChar = Mid(sURL, Index, 1)
If cChar = "0" Or _
(cChar >= "1" And cChar <= "9") Or _
(cChar >= "a" And cChar <= "z") Or _
(cChar >= "A" And cChar <= "Z") Or _
cChar = "-" Or _
cChar = "_" Or _
cChar = "." Or _
cChar = "*" Then
'** URL 에 허용되는 문자들 :: Buffer 문자열에 추가한다.
sBuffer = sBuffer & cChar
ElseIf cChar = " " Then
'** 공백 문자 :: + 로 대체하여 Buffer 문자열에 추가한다.
sBuffer = sBuffer & "+"
Else
'** URL 에 허용되지 않는 문자들 :: % 로 Encoding 해서 Buffer 문자열에 추가
sTemp = CStr(Hex(Asc(cChar)))
If Len(sTemp) = 4 Then
sBuffer = sBuffer & "%" & Left(sTemp, 2) & "%" & Mid(sTemp, 3, 2)
ElseIf Len(sTemp) = 2 Then
sBuffer = sBuffer & "%" & sTemp
End If
End If
Next
'** Error 처리
If Err.Number > 0 Then
URLEncode = ""
Exit Function
End If
'** 결과를 리턴한다.
URLEncode = sBuffer
Exit Function
End Function
Function URLEncode_Gb(ByVal str)
Dim i,s
Dim B,bCode,gb,Hight8b,Low8b
s = ""
For i = 1 To Len(str)
B = Mid(str,i,1)
bCode=Abs(Asc(B))
If (bCode>=48 And bCode<=57) Or (bCode>=65 And bCode<=90) Or (bCode>=97 And bCode<=122) Or bCode=42 Or bCode=45 Or bCode=46 Or bCode=64 Or bCode=95 Then
s=s & B
ElseIf bCode=32 Then
s=s & "+"
ElseIf bCode<128 Then
s=s & "%" & Right("00" & Hex(bCode),2)
Else
gb = Asc(B)
If gb < 0 Then
gb = gb + &H10000
End If
Hight8b = (gb And &HFF00) / &H100
Low8b = gb And &HFF
s = s & "%" & Hex(Hight8b) & "%" & Hex(Low8b)
End If
Next
URLEncode_Gb = s
End Function