Function urldecode(str)
Dim res, reg, tmp
Dim i
if IsNull(str) then
str = ""
else
Set reg = New RegExp
reg.IgnoreCase = True
reg.Pattern = "^%[0-9a-f][0-9a-f]$"
str = Replace(str, "+", " ")
res = ""
For i = 1 To Len(str)
tmp = Mid(str, i, 3)
If reg.Test(tmp) Then
If CInt("&H" & Mid(str, i + 1, 2)) < 128 Then
res = res & Chr(CInt("&H" & Mid(str, i + 1, 2)))
i = i + 2
Elseif mid(str, i+3, 1) ="%" then
res = res & Chr(CInt("&H" & Mid(str, i + 1, 2) & Mid(str, i + 4, 2)))
i = i + 5
Else
res = res & Chr(CInt("&H" & Mid(str, i + 1, 2) & "00") + asc(mid(str,i+3,1)))
i = i + 3
' 이부분이 중요하다.
' 기존 urldecode함수가 몇 몇 글자들에서 에러를 내는 이유는
' 3바이트로 인코딩 되어있는 부분이 있기 때문.
' ascII로 변형되어 인코딩 된 부분이 존재한다.
End If
Else
res = res & Mid(str, i, 1)
End If
Next
End If
urldecode = res
End Function
댓글 없음:
댓글 쓰기