강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

[팁] XMLHttpRequest를 사용할 때 한글 파라미터의 인코딩 처리 방법
작성자 : 13 김영철
등록날짜 : 2009.01.29 16:57
4,411
XMLHttpRequest에서 한글 파라미터를 전송할 때 인코딩을 처리하는 방법에 대해서 살펴본다.
프로바이더: 최범균
XMLHttpRequest 사용시 한글 파라미터 전송 방법

자바캔에 실린 'XMLHttpRequest를 이용한 웹 채팅 구현'이란 글에서 한글 문제를 iframe을 사용하여 해결했는데, 그 방식 말고 자바캔의 댓글 추가에서 사용한 한글 처리 방식에 대해서 설명해보도록 하겠다.

XMLHttpRequest의 한글 파라미터 문제 해결 방법에 대해서 살펴보기 전에, 웹브라우저가 파라미터 값을 전송할 때 어떻게 인코딩하는 지 살펴보도록 하자. 대부분의 한글 사이트는 다음과 같이 캐릭터셋이 "euc-kr"인 HTML 문서를 사용할 것이다.

<PRE class=code> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko"> <head> <meta http-equiv="content-type" content="text/html; charset=euc-kr" /> <title>test</title> </head> <body> <form name="test" action="form.jsp"> <input type="text" name="name" /><input type="submit"/> </form> </body> </html></PRE>

위 문서는 name 파라미터를 form.jsp로 전송하는 FORM을 갖고 있는데, name 필드에 '한글'을 입력한 뒤 submit 버튼을 누르면 다음과 같이 파라미터 값이 변환되어 전송된다.

<PRE class=code> euc-kr 캐릭터셋에 맞춰 '한글' 을 인코딩한 값 http://..../form.jsp?name=%C7%D1%B1%DB</PRE>

위에서 '%C7%D1%B1%DB'는 '한글'을 euc-kr 캐릭터셋에 맞춰서 인코딩한 결과이다. IE나 파이어폭스 등의 웹 브라우저는 문서의 캐릭터셋에 맞춰서 파라미터를 인코딩하여 전송하기 때문에, 만약 문서의 캐릭터셋이 utf-8 이면 '한글' 파라미터를 다음과 같이 인코딩하여 전송하게 된다.

<PRE class=code> utf-8 캐릭터셋에 맞춰 '한글' 을 인코딩한 값 http://..../form.jsp?name=%ED%95%9C%EA%B8%80</PRE>

문서 캐릭터셋이 euc-kr인 경우와 utf-8인 경우 전송되는 파라미터의 인코딩된 값도 다른 것을 확인할 수 있다.

이제, 다시 본론으로 돌아와서 XMLHttpRequest가 전송하는 파라미터에 대해서 살펴보자. XMLHttpRequest도 파라미터를 웹서버에 전송하기 때문에 파라미터 값을 알맞게 인코딩 해 주어야 한다. 그런데, 아쉽게도 XMLHttpRequest 자체적으로 인코딩 처리를 지원해주지는 않는다. 따라서, 자바스크립트가 지원해주는 인코딩 처리 함수를 사용해야 한다. 자바 스크립트가 제공하는 인코딩 처리 함수는 escape()와 encodeURIComponent()의 두가지가 있다. 이 두가지는 동작 방식이 다른데, 다음표는 두 함수의 실행 결과를 보여주고 있다.

인코딩 처리 인코딩된 값 설명
두 함수의 실행 결과는 문서 캐릭터셋이 euc-kr 이거나 utf-8 인 경우 모두 동일하다.
escape('한글') %uD55C%uAE00 유니코드 값을 표현
encodeURIComponent('한글') %ED%95%9C%EA%B8%80 utf-8로 인코딩. encodeURI() 함수도 동일한 결과 출력

두 함수의 실행 결과를 보면 encodeURIComponent() 함수가 utf-8로 인코딩한 결과를 보여줌을 알 수 있다. 따라서, XMLHttpRequest로 한글 파라미터를 전송할 때에는 다음과 같은 방법을 사용하면 된다.

  • 웹브라우저에서: 자바스크립트 encodeURIComponent() 함수를 사용하여 파라미터 값을 utf-8로 인코딩하여 전송한다.
  • 서버에서: 파라미터 값을 utf-8로 디코딩하여 읽어온다.

웹브라우저의 코드를 작성하면 다음과 같을 것이다. (POST 방식으로 전송할 때에도 같은 방법으로 파라미터를 인코딩하면 된다.

) <PRE class=code> <script type="text/javascript"> function sendData() { var xmlHttp = null; if( window.XMLHttpRequest ){ xmlHttp = new XMLHttpRequest(); } else{ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } if( xmlHttp ){ var nameValue = document.memberForm.name.value; var idValue = document.memberForm.id.value; var param = "name="+encodeURIComponent(nameValue)+"&id="+encodeURIComponent(idValue); xmlHttp.open('GET', 'http://www.some.com/receive.jsp?'+param, true); xmlHttp.onReadyStateChange = function(){ if( xmlHttp.readyState == 4 ){ alert(xmlHttp.responseText); } } xmlHttp.send(null); } } </script></PRE>

서버에서는 파라미터를 utf-8로 읽어오기만 하면 된다. 예를 들어, JSP를 사용한다면 다음과 같이 파라미터의 인코딩을 utf-8로 지정하면 된다.

<PRE class=code> <% request.setCharacterEncoding("utf-8"); ... String name = request.getParameter("name"); %></PRE>

출처 : Tong - 드렁크수달스님의 ■ AJAX ■통

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3285 이것은 AI파일 미리보기입니다. 댓글3 M 최고의하루 01.15 3587
3284 이미지미리보기pds파일미리보기파일입니다^^ 댓글2 99 단국강토 01.14 2826
3283 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2616
3282 자판기안의 특수문자 99 단국강토 01.13 2531
3281 ntdll.dll 오류 해결방법 M 최고관리자 01.12 4393
3280 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3099
3279 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2231
3278 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2499
3277 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 2842
3276 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2392
3275 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2352
3274 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 4029
3273 이미지미리보기pds파일미리보기파일입니다^^ 99 단국강토 01.14 2448
3272 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2783
3271 공유기 차단 무력화 시키는 법 99 단국강토 01.13 3541
3270 자판기안의 특수문자 99 단국강토 01.13 2364
3269 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3661
3268 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3226
3267 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2169
3266 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2485
3265 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3311
3264 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2212
3263 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2308
3262 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3700
3261 하드,CPU,RAM 지원표 M 최고의하루 12.18 2584
3260 award bios 어워드 바이오스 설정법 M 최고의하루 12.18 3943
3259 내장 그래픽카드 죽이는 법 M 최고의하루 12.04 4881
3258 컴퓨터 조립 M 최고의하루 12.04 2830
3257 USB 버젼 속도 차이 2 천진난만 02.20 2375
3256 제가 사용하고 있는 마케팅프로그램입니다 댓글1 3 천지인 05.23 13192
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취