본문 바로가기

인터넷과나

server.urlencode 에 대응하는 urldecode 함수

뭐이래 님 블로그에서 퍼왔습니다. 감사.
블로그로 이동하기

'server.URLencode 에 대응하는 urlDecode 함수

' Euc-kr 인코딩에서 사용

' 기존 웹에 공개된 소스들은 유니코드에서 동작하나, Euc-kr에서는 일부 문자열에서 에러 발생


 Function FnURLDecode(sStr)

    Dim sRet, reEncode, sChar
  Dim i
 
 if isnull(sStr) then
  sStr = ""
 else 
  Set reEncode = New RegExp
  reEncode.IgnoreCase = True
  reEncode.Pattern = "^%[0-9a-f][0-9a-f]$"
  sStr = Replace(sStr, "+", " ")
  sRet = ""

  For i = 1 To Len(sStr)
      sChar = Mid(sStr, i, 3)
      If reEncode.Test(sChar) Then
          If CInt("&H" & Mid(sStr, i + 1, 2)) < 128 Then
              sRet = sRet & Chr(CInt("&H" & Mid(sStr, i + 1, 2)))
              i = i + 2
             
          Elseif mid(sStr, i+3, 1) ="%" then
              sRet = sRet & Chr(CInt("&H" & Mid(sStr, i + 1, 2) & Mid(sStr, i + 4, 2)))
              i = i + 5
         
          else
     sRet = sRet & Chr(CInt("&H" & Mid(sStr, i + 1, 2) & "00") + asc(mid(sStr,i+3,1)))
     i = i + 3

'이부분이 중요하다.

' 기존 urldecode함수가 몇 몇 글자들에서 에러를 내는 이유는 3바이트로 인코딩 되어있는 부분이 있기 때문. ascII로 변형되어 인코딩 된 부분이 존재한다.
     
          End If
      Else
          sRet = sRet & Mid(sStr, i, 1)
      End If
  Next
 end if
    FnURLDecode = sRet

End Function


'누군가 나처럼 1박2일동안 삽질하지 않도록...^^

Posted by 뭐이래

'인터넷과나' 카테고리의 다른 글

내 블로그는?  (0) 2009.01.03
fckeditor 2.6 파일 업로드 버그  (2) 2008.05.29
MS SQL 인젝션 방지용 쿼리  (0) 2008.05.12