3초기억력

ASP - URLDecode 함수. 퍼옴 본문

플밍_ASP

ASP - URLDecode 함수. 퍼옴

잠수콩 2008. 11. 17. 10:38
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 엽우입니다.

이번에 제가 필요하여 이것 저것 참고 하여 만들어봤습니다.
에러가 없는 한글은 잘 처리되는데,
인수로 깨진 한글을 넣을 경우(한글의 처음 1바이트만 인코딩하여 넘긴 경우)는
마땅히 처리할 방법이 없으 그냥 무시하고 처리하게 했습니다.
ASP는 강력하지만 VBScript 자체 만으로는 아쉬운 부분이 많네요. ^^;

그럼 소스 나갑니다.
필요한 곳에 유용하게 사용되길 바랍니다.

<%

Function URLDecode(Str)

' 변수 선언
Dim Ret, Tmp, i, ReX, Char

' 정규 표현식, %00 ~ %FF 까지 걸러냄
Set ReX = New RegExp
ReX.IgnoreCase = True
ReX.Pattern = "^%[0-9a-f][0-9a-f]$"

' 변수 초기화
Str = Replace(Str, "+", " ") ' URLDecode는 공백을 더하기 기호로 바꿈
Ret = ""

For i = 1 To Len(Str)
Char = Mid(Str, i, 3) ' 세 글자씩 끊어 와서
If ReX.Test(Char) Then ' %00 ~ %FF 형태일 때
If CInt("&H" & Mid(Str, i + 1, 2)) < 128 Then
' 아스키문자인 경우, 즉 기호 등 한글이 아닌 경우
Ret = Ret & Chr(CInt("&H" & Mid(Str, i + 1, 2)))
i = i + 2 ' 잘라낸 만큼 뒤로 이동
Else
' 한글인 경우 뒤의 세글자를 더 잘라 옴
Ret = Ret & Chr(CInt("&H" & Mid(Str, i + 1, 2) & Mid(str, i + 4, 2)))
i = i + 5 ' 잘라낸 만큼 뒤로 이동
End If
Else
' 인코딩 되지 않은 경우. 대개 영문자나 숫자
Ret = Ret & Mid(Str, i, 1)
End If
Next

URLDecode = Ret

End Function

'Response.Write URLDecode("%BE%C8%B3%E7%2C+%BC%BC%BB%F3%BE%C6%21")

%>
 
출처 : 태요 : 류기환 
Comments