블로그로 이동하기
'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일동안 삽질하지 않도록...^^
'인터넷과나' 카테고리의 다른 글
내 블로그는? (0) | 2009.01.03 |
---|---|
fckeditor 2.6 파일 업로드 버그 (2) | 2008.05.29 |
MS SQL 인젝션 방지용 쿼리 (0) | 2008.05.12 |