ClassicASP UTF-8 ↔ euc-kr 변환 escape / encodeURI / encodeURIComponent
페이지 정보
본문
utf-8 웹페이지에 KCP 전자결제 시스템 구축중 한글을 전송하는 과정에서 문제가 발생합니다.
KCP ( 올더게이트 등 )은 euc-kr 데이타로 결제과정이 진행되기 때문입니다.
이때 한글을 escape 함수를 이용해서 암호화 형태로 변형해서 KCP에 전송후 리턴된 한글을 다시 unescape 함수를 이용해서 원래 한글로 되돌려 Database에 저장합니다.
용어설명
인코딩 : 정보를 부호화/암호화
디코딩 : 그 부호화/암호화를 해제
<% @LANGUAGE='VBSCRIPT' CODEPAGE='65001' %>
<%
response.CharSet = "utf-8"
response.write "인코딩 = "& escape("해피정닷컴") &"<br />"
response.write "디코딩 = "& unescape("%uD574%uD53C%uC815%uB2F7%uCEF4") &"<br />"
%>
결과
인코딩 = %uD574%uD53C%uC815%uB2F7%uCEF4
디코딩 = 해피정닷컴
url을 client에서 server로 넘길 때 escape sequence로 넘겨야 client에서 넘긴 url을 제대로 받을 수 있기 때문에 사용합니다.
그러면, 비슷 비슷한 이 세 함수들의 차이점을 알아봅니다.
1. escape() :
"+" 문자를 server쪽에서 공백(space)으로 처리하고, 실제 공백(space)문자도 공백으로 처리하기 때문에, 이 escape()함수는 non-ASCII 문자들을 정확하게 처리하지 못합니다.
따라서 이런 escape()의 문제점을 피하기 위한 최선의 선택은 거의 모든 non-ASCII 문자들 까지 encode 해주는 "encodeURIComponent()"를 사용하는 것입니다.
1-1. escape()가 encode 하지 못하는 문자들 : @*/+
2. encodeURI() :
이 함수는 "'"(외 따옴표) 문자를 encode 하지 않습니다. URI에서 valid한 문자로 사용되기 때문입니다.
2-1. encodeURI()가 encode 하지 못하는 문자들 : ~!@#$&*()=:/,;?+'
3. encodeURIComponent() :
최근에, encodeURIComponent()함수는 대부분의 경우에 URI를 인코딩 할 때 사용 됩니다.
이 함수는 대부분의 문자들을 인코딩 합니다.
이 함수는 "'"(외 따옴표)문자를 encode 하지 않습니다. URI에서 valid한 문자로 사용되기 때문입니다.
3-1. encodeURIComponent() 가 encode 하지 못하는 문자들 : ~!*()'
관련자료
http://taeyo.pe.kr/Forum/Content.aspx?SEQ=151401&TBL=ASP
http://blog.naver.com/kolove79/20044205975
http://xkr.us/articles/javascript/encode-compare/
KCP ( 올더게이트 등 )은 euc-kr 데이타로 결제과정이 진행되기 때문입니다.
이때 한글을 escape 함수를 이용해서 암호화 형태로 변형해서 KCP에 전송후 리턴된 한글을 다시 unescape 함수를 이용해서 원래 한글로 되돌려 Database에 저장합니다.
용어설명
인코딩 : 정보를 부호화/암호화
디코딩 : 그 부호화/암호화를 해제
<% @LANGUAGE='VBSCRIPT' CODEPAGE='65001' %>
<%
response.CharSet = "utf-8"
response.write "인코딩 = "& escape("해피정닷컴") &"<br />"
response.write "디코딩 = "& unescape("%uD574%uD53C%uC815%uB2F7%uCEF4") &"<br />"
%>
결과
인코딩 = %uD574%uD53C%uC815%uB2F7%uCEF4
디코딩 = 해피정닷컴
url을 client에서 server로 넘길 때 escape sequence로 넘겨야 client에서 넘긴 url을 제대로 받을 수 있기 때문에 사용합니다.
그러면, 비슷 비슷한 이 세 함수들의 차이점을 알아봅니다.
1. escape() :
"+" 문자를 server쪽에서 공백(space)으로 처리하고, 실제 공백(space)문자도 공백으로 처리하기 때문에, 이 escape()함수는 non-ASCII 문자들을 정확하게 처리하지 못합니다.
따라서 이런 escape()의 문제점을 피하기 위한 최선의 선택은 거의 모든 non-ASCII 문자들 까지 encode 해주는 "encodeURIComponent()"를 사용하는 것입니다.
1-1. escape()가 encode 하지 못하는 문자들 : @*/+
2. encodeURI() :
이 함수는 "'"(외 따옴표) 문자를 encode 하지 않습니다. URI에서 valid한 문자로 사용되기 때문입니다.
2-1. encodeURI()가 encode 하지 못하는 문자들 : ~!@#$&*()=:/,;?+'
3. encodeURIComponent() :
최근에, encodeURIComponent()함수는 대부분의 경우에 URI를 인코딩 할 때 사용 됩니다.
이 함수는 대부분의 문자들을 인코딩 합니다.
이 함수는 "'"(외 따옴표)문자를 encode 하지 않습니다. URI에서 valid한 문자로 사용되기 때문입니다.
3-1. encodeURIComponent() 가 encode 하지 못하는 문자들 : ~!*()'
관련자료
http://taeyo.pe.kr/Forum/Content.aspx?SEQ=151401&TBL=ASP
http://blog.naver.com/kolove79/20044205975
http://xkr.us/articles/javascript/encode-compare/
댓글목록
등록된 댓글이 없습니다.