ClassicASP 한글까지 URLDecode 되는 함수 (인코딩, 디코딩 함수)
페이지 정보
본문
URLDecode 되는 함수들을 찾아서 이용해봤지만 한글까지 적용되지는 않더군요.
왜냐하면 한글은 그 표기가 2바이트가 모여서 하나가 되기 때문이죠.
그러니 인코딩을 하면 2바이트가 되는 특수문자를 디코딩하는 여타의 펑션으로를 않된다는 거죠.
한글은 인코딩이 되면 %로 구분된넘이 2개거든요.
그래서 캐릭터 코드가 130이 넘어가면 % 를 두개 부쳐서 출력하게 했습니다.
그럼 유용하게 사용하시길...
<%
Function URLDecode(Expression)
Dim strSource, strTemp, strResult, strchr
Dim lngPos, AddNum, IFKor
strSource = Replace(Expression, "+", " ")
For lngPos = 1 To Len(strSource)
AddNum = 2
strTemp = Mid(strSource, lngPos, 1)
If strTemp = "%" Then
If lngPos + AddNum < Len(strSource) + 1 Then
strchr = CInt("&H" & Mid(strSource, lngPos + 1, AddNum))
If strchr > 130 Then
AddNum = 5
IFKor = Mid(strSource, lngPos + 1, AddNum)
IFKor = Replace(IFKor, "%", "")
strchr = CInt("&H" & IFKor )
End If
strResult = strResult & Chr(strchr)
lngPos = lngPos + AddNum
End If
Else
strResult = strResult & strTemp
End If
Next
URLDecode = strResult
End Function
TEXT = "테스트에 성공했습니다. 특수문자: @@@@@@@ http://goosia.com/"
En_Text = Server.URLEncode(TEXT)
De_Text = URLDecode(En_Text)
Response.Write "<br>Input Data: " & TEXT
Response.Write "<br>Encode Data: " & En_Text
Response.Write "<br>Decode Data: " & De_Text
%>
자료출처
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=57&MAEULNo=22&no=1430
< 응용편 >
로그인후 앞화면 돌아가기
1. 상단 로그인 include 페이지
<%
pURL = request.servervariables("HTTP_url")
En_Text = Server.URLEncode(pURL)
<a href="login.asp?url=<%=En_Text %>">로그인</a>
2. 로그인 ID, PW 입력 페이지
<%
redir_encode_action = request("url")
%>
<form method="post" name="loginFrm" action="login_action.asp">
<input type="hidden" name="redir" value="<%=escape(redir_encode_action)%>">
아이디. <input type="text" name="member_id" value="" />
비밀번호. <input type="password"name="member_pwd" value="" />
<input type="submit" value="로그인" />
</form>
3. 로그인 실행페이지
<%
' URLDecode 함수 로딩확인
redir = Request("redir")
'
'
'
if redir <> "" then
location_url = URLDecode(redir)
else
location_url = "/"
end if
%>
<script language="javascript">
<!--
location.href = '<%=location_url%>';
//-->
</script>
왜냐하면 한글은 그 표기가 2바이트가 모여서 하나가 되기 때문이죠.
그러니 인코딩을 하면 2바이트가 되는 특수문자를 디코딩하는 여타의 펑션으로를 않된다는 거죠.
한글은 인코딩이 되면 %로 구분된넘이 2개거든요.
그래서 캐릭터 코드가 130이 넘어가면 % 를 두개 부쳐서 출력하게 했습니다.
그럼 유용하게 사용하시길...
<%
Function URLDecode(Expression)
Dim strSource, strTemp, strResult, strchr
Dim lngPos, AddNum, IFKor
strSource = Replace(Expression, "+", " ")
For lngPos = 1 To Len(strSource)
AddNum = 2
strTemp = Mid(strSource, lngPos, 1)
If strTemp = "%" Then
If lngPos + AddNum < Len(strSource) + 1 Then
strchr = CInt("&H" & Mid(strSource, lngPos + 1, AddNum))
If strchr > 130 Then
AddNum = 5
IFKor = Mid(strSource, lngPos + 1, AddNum)
IFKor = Replace(IFKor, "%", "")
strchr = CInt("&H" & IFKor )
End If
strResult = strResult & Chr(strchr)
lngPos = lngPos + AddNum
End If
Else
strResult = strResult & strTemp
End If
Next
URLDecode = strResult
End Function
TEXT = "테스트에 성공했습니다. 특수문자: @@@@@@@ http://goosia.com/"
En_Text = Server.URLEncode(TEXT)
De_Text = URLDecode(En_Text)
Response.Write "<br>Input Data: " & TEXT
Response.Write "<br>Encode Data: " & En_Text
Response.Write "<br>Decode Data: " & De_Text
%>
자료출처
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=57&MAEULNo=22&no=1430
< 응용편 >
로그인후 앞화면 돌아가기
1. 상단 로그인 include 페이지
<%
pURL = request.servervariables("HTTP_url")
En_Text = Server.URLEncode(pURL)
<a href="login.asp?url=<%=En_Text %>">로그인</a>
2. 로그인 ID, PW 입력 페이지
<%
redir_encode_action = request("url")
%>
<form method="post" name="loginFrm" action="login_action.asp">
<input type="hidden" name="redir" value="<%=escape(redir_encode_action)%>">
아이디. <input type="text" name="member_id" value="" />
비밀번호. <input type="password"name="member_pwd" value="" />
<input type="submit" value="로그인" />
</form>
3. 로그인 실행페이지
<%
' URLDecode 함수 로딩확인
redir = Request("redir")
'
'
'
if redir <> "" then
location_url = URLDecode(redir)
else
location_url = "/"
end if
%>
<script language="javascript">
<!--
location.href = '<%=location_url%>';
//-->
</script>
댓글목록
등록된 댓글이 없습니다.