본문 바로가기
Web Program/Asp Lecture

URLEncode(URLStr)와 URLDecode(URLStr)

by 현이빈이 2008. 9. 8.
반응형
URLEncode(URLStr)와 URLDecode(URLStr)를 해보세요.. ^^





----- Example -----

<%

URLstr = "인코드 함수와 디코드 함수입니다. Test 중"

Encode = URLEncode(URLStr)

Decode = URLDecode(Encode)

response.write Encode & "<br>"

response.write Decode & "<br>"

%>





----- Function -----

<%

'****************************************************************************************

'*

'*  URLTools.vbs 는 공개 VBScript File 입니다. 상업적, 비상업적인 목적으로 어디서나

'*  자유롭게 사용하실 수 있습니다.

'*

'*  다만, 기능 추가나 에러 수정을 목적으로 Code 를 수정하셨을 때는, 제게 수정된 내용과

'*  목적에 대하여 적은 메일을 보내주셔서 제가 수정사항을 반영할 수 있도록 해주시면 감사하

'*  겠습니다. 또한, 이런식으로 수정된 Code 는 그 내용과 이유를 정리하여 제 홈페이지의

'*  내용에 추가하도록 하겠습니다. 연락처는 다음과 같습니다.

'*

'*  Homepage URL : http://www.egocube.pe.kr/

'*  E-Mail       : songgun@egocube.pe.kr

'*

'****************************************************************************************





'****************************************************************************************

'*

'*  형 식 : Function

'*  정 의 : Public Function URLEncode(URLStr)

'*  설 명 : URLStr 인자로 입력받은 문자열을 URLEncoding 한다.

'*  작 성 : 송원석

'*  날 짜 : 2001.12.03

'*

'****************************************************************************************



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

'*  정 의 : Public Function URLDecode(URLStr)

'*  설 명 : URLStr 인자로 입력받은 문자열을 URLDecoding 한다.

'*  작 성 : 송원석

'*  날 짜 : 2001.12.03

'*

'****************************************************************************************



Public Function URLDecode(URLStr)



    Dim sURL                '** 입력받은 URL 문자열

    Dim sBuffer             '** Decoding 중의 URL 을 담을 Buffer 문자열

    Dim cChar               '** URL 문자열 중의 현재 Index 의 문자

   

    Dim Index

   

   

On Error Resume Next





    Err.Clear

    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

   

   

    '** Error 처리

    If Err.Number > 0 Then

   

        URLDecode = ""

        Exit Function

       

    End If

   

    '** 결과를 리턴한다.

    URLDecode = sBuffer

   

    Exit Function

   

   

End Function

%> 
반응형