'****************************************************************************************
'*
'* EgoCube.URLTools Component 는 공개 Component 입니다. 상업적, 비상업적인 목적으로 어디
'* 서나 자유롭게 사용하실 수 있습니다.
'*
'* 다만, 기능 추가나 에러 수정을 목적으로 Code 를 수정하셨을 때는, 제게 수정된 내용과
'* 목적에 대하여 적은 메일을 보내주셔서 제가 수정사항을 반영할 수 있도록 해주시면 감사하
'* 겠습니다. 또한, 이런식으로 수정된 Code 는 그 내용과 이유를 정리하여 제 홈페이지의
'* 내용에 추가하도록 하겠습니다. 연락처는 다음과 같습니다.
'*
'* Homepage URL : http://www.egocube.pe.kr/
'* E-Mail : songgun@egocube.pe.kr
'*
'****************************************************************************************
Option Explicit
Public Type ColorsType
rVal As Integer
gVal As Integer
bVal As Integer
End Type
Public Type Song
Title As String
Artist As String
Number As String
End Type
'****************************************************************************************
'*
'* 형 식 : Function
'* 정 의 : Public Function URLEncode(URLStr As String) As String
'* 설 명 : URLStr 인자로 입력받은 문자열을 URLEncoding 한다.
'* 작 성 : 송원석
'* 날 짜 : 2001.12.03
'*
'****************************************************************************************
Public Function URLEncode(URLStr As String) As String
Dim sURL As String '** 입력받은 URL 문자열
Dim sBuffer As String '** Encoding 중의 URL 을 담을 Buffer 문자열
Dim sTemp As String '** 임시 문자열
Dim cChar As String '** URL 문자열 중의 현재 Index 의 문자
Dim Index As Integer
Dim lErrNum As Long '** Error Number
Dim sErrSource As String '** Error Source
Dim sErrDesc As String '** Error Description
Dim sMsg As String '** Error Message
On Error GoTo ErrorHanddle:
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
'** 결과를 리턴한다.
URLEncode = sBuffer
Exit Function
ErrorHanddle:
'** Error 가 발생하면 공백 문자를 Return 한다.
URLEncode = ""
'** Error 정보를 얻는다.
lErrNum = Err.Number
sErrSource = Err.Source
sErrDesc = Err.Description
'** Event Log 에 Error 를 기록한다.
sMsg = vbCrLf & vbCrLf & _
"Error Object : EgoCube.URLTools," & vbCrLf & _
"Error Method : Public Function URLEncode(URLStr As String) As String," & vbCrLf & _
"Error Number : " & lErrNum & "," & vbCrLf & _
"Error Source : " & sErrSource & "," & vbCrLf & _
"Error Description : " & sErrDesc
App.LogEvent sMsg, vbLogEventTypeError
'** Error 를 발생시킨다.
Err.Raise lErrNum, sErrSource, sErrDesc
Exit Function
End Function
'****************************************************************************************
'*
'* 형 식 : Function
'* 정 의 : Public Function URLDecode(URLStr As String) As String
'* 설 명 : URLStr 인자로 입력받은 문자열을 URLDecoding 한다.
'* 작 성 : 송원석
'* 날 짜 : 2001.12.03
'*
'****************************************************************************************
Public Function URLDecode(URLStr As String) As String
Dim sURL As String '** 입력받은 URL 문자열
Dim sBuffer As String '** Decoding 중의 URL 을 담을 Buffer 문자열
Dim cChar As String '** URL 문자열 중의 현재 Index 의 문자
Dim Index As Integer
Dim lErrNum As Long '** Error Number
Dim sErrSource As String '** Error Source
Dim sErrDesc As String '** Error Description
Dim sMsg As String '** Error Message
On Error GoTo ErrorHanddle:
sURL = Trim(URLStr) '** URL 문자열을 얻는다.
sBuffer = "" '** 임시 Buffer 용 문자열 변수 초기화.
'******************************************************
'* URL Decoding 작업
'******************************************************
Index = 1
Do While Index <= Len(sURL)
cChar = Mid(sURL, Index, 1)
If cChar = "+" Then
'** '+' 문자 :: ' ' 로 대체하여 Buffer 문자열에 추가한다.
sBuffer = sBuffer & " "
Index = Index + 1
ElseIf cChar = "%" Then
'** '%' 문자 :: Decoding 하여 Buffer 문자열에 추가한다.
cChar = Mid(sURL, Index + 1, 2)
If CInt("&H" & cChar) < &H80 Then
'** 일반 ASCII 문자
sBuffer = sBuffer & Chr(CInt("&H" & cChar))
Index = Index + 3
Else
'** 2 Byte 한글 문자
cChar = Replace(Mid(sURL, Index + 1, 5), "%", "")
sBuffer = sBuffer & Chr(CInt("&H" & cChar))
Index = Index + 6
End If
Else
'** 그 외의 일반 문자들 :: Buffer 문자열에 추가한다.
sBuffer = sBuffer & cChar
Index = Index + 1
End If
Loop
'** 결과를 리턴한다.
URLDecode = sBuffer
Exit Function
ErrorHanddle:
'** Error 가 발생하면 공백 문자를 Return 한다.
URLDecode = ""
'** Error 정보를 얻는다.
lErrNum = Err.Number
sErrSource = Err.Source
sErrDesc = Err.Description
'** Event Log 에 Error 를 기록한다.
sMsg = vbCrLf & vbCrLf & _
"Error Object : EgoCube.URLTools," & vbCrLf & _
"Error Method : Public Function URLDecode(URLStr As String) As String," & vbCrLf & _
"Error Number : " & lErrNum & "," & vbCrLf & _
"Error Source : " & sErrSource & "," & vbCrLf & _
"Error Description : " & sErrDesc
App.LogEvent sMsg, vbLogEventTypeError
'** Error 를 발생시킨다.
Err.Raise lErrNum, sErrSource, sErrDesc
Exit Function
End Function
VB