자바스크립트 ajax를 이용한 한글 데이터 전송시 한글 깨짐 현상이 발생하여 원인을 연구해 보았지만 찾질 못했다.
그래서 편법으로 한글을 인코딩하여 보내는 방법을 택하기로 했다...
인터넷을 조회하면 자바스크립트의 내장함수인
encodeURI
encodeURIComponent
함수를 사용하라고 되어 있는데...
문제는 인코딩을 하지만 ASP파일에서 받아서 디코딩(복구) 하는 방법을 찾을수가 없었다.
그래서 찾은 함수가... escape
ASP 내장함수에 다행히 unescape 가 존재하여 한글이 깨지지 않고 전송할수 있었다...
이 함수는 초창기에 나와서 그런지 지금은 업데이트가 안된다고 권장 하지 않는다고 나온다...
아... 이걸 불안정한 이스케이프 함수를 계속 사용해야 하나 고민하던 차에....
자바스크립트 내장함수를 ASP 서버에서 활용할수 있는 방법을 찾았다...
이게 ASP.net 이후부터 되는것 같기도 하고.... 이번부터 되는거 같기도 하고...
하여튼 윈도우서버 2003 이전 서버에서도 되는지는 확인을 못해봐서 된다. 안된다 장담은 못한다.
결론은 아직까지 escape 함수로 데이터 전송해도 작동은 하지만 어느날 갑자기 안되는 현상이 발생할까봐 좀더 연구했더니 자바스크립트 내장 함수를 바로 사용할수 있는 길을 발견할수 있었다.
방법은 간단하다... VBScript 처럼 runat="server"만 추가 하면 적용이 된다.
<script language="javascript" runat="server"> function js_decodeURI(s) { return decodeURI(s); } function js_decodeURIComponent(s) { return decodeURIComponent(s); } </script>
이렇게 추가하여 받은 데이터 변환만 해주면 정상적인 한글이 나온다는거...
다음은 예제 전체 소스..
<% data1 = Request("data1") data2 = Request("data2") data3 = Request("data3") Response.write "escape 인코딩 문자열 =[" & data1 & "]<br>" Response.write "encodeURI 인코딩 문자열 =[" & data2 & "]<br>" Response.write "encodeURIComponent 인코딩 문자열 =[" & data3 & "]<br><br>" Response.write "Unescape 디코딩 문자열=" & Unescape(data1) & "<br>" Response.write "js_decodeURI 디코딩 문자열=" & js_decodeURI(data2) & "<br>" Response.write "js_decodeURIComponent 디코딩 문자열=" & js_decodeURIComponent(data3) & "<br><br>" %> <script language="javascript"> function Send() { var f = document.MForm; f.data1.value = escape(f.orz.value); f.data2.value = encodeURI(f.orz.value); f.data3.value = encodeURIComponent(f.orz.value); f.submit(); } </script> <form name="MForm"> <input name="orz" value="ASP에서 자바스크립트로 인코딩한 문자열 디코딩 하기" style="width:80%;"><br> <input name="data1" value="escape 이용 전송 문자열" style="width:80%;"><br> <input name="data2" value="encodeURI 이용 전송 문자열" style="width:80%;"><br> <input name="data3" value="encodeURIComponent 이용 전송 문자열" style="width:80%;"><br> </form> <a href="javascript:Send();">한글 전송하기</a> <script language="javascript" runat="server" src="/server_js.js"></script>
#ASP #Javascript #Ajax #한글처리 #escape #encodeURI
본 블로그의 글은 공공정보와 개인적 생각의 글 임을 알려드립니다.
또한 오류가 있는 부분이 있으면 댓글로 알려주시기 바랍니다.
감사합니다.
'교육' 카테고리의 다른 글
레드햇 무료 정부교육 안내 20년 8월- RHCSA, 컨테이너, DevOps (0) | 2020.07.21 |
---|---|
[식품의약품안전처] 맞춤형화장품 조제관리사, 10월 17일 정기 시험 시행 (0) | 2020.07.19 |
[과학기술정보통신부] 손바닥 위 데이터센터 가능할까? - 메모리 용량 1,000배 향상 가능 기술발굴 - (0) | 2020.07.05 |
[활용팁] typeof 를 이용한 조건에 따른 함수 실행하기 (0) | 2020.06.24 |
[특허청] 당신의 아이디어, 기업 혁신의 주역이 될 수 있습니다. (0) | 2020.06.16 |
댓글