Ajax 한글 깨지지 않게 하는 방법을 알아 봅시다~! > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

Ajax 한글 깨지지 않게 하는 방법을 알아 봅시다~! 정보

PHP Ajax 한글 깨지지 않게 하는 방법을 알아 봅시다~!

본문

아래 Ajax 소개 사이트 글에 보시면 알겠지만 ...... Ajax 게시판.....

http://hooriza.com/sample/ajaxboard/

위에 게시판도 마찬가지로...한글이 깨지지 않게 하는 방법을 알려 주는 내용입니다~!
제가 글을 쓴것은 아니고여~! Phpschool의 김진영님의 글을 가져 온 것입니다~!
위에 링크도 시켜 드렸구여~! 맨아래 출처를 표기 했으니 가서 글을 보시는것도
도움이 되실 수 있을것으로 보입니다~! ^^* 열공 Ajax 하시길 ㅋㅋ
 
----------------------------------------------------------------------------------------------------------------------------
MSIE에서 XMLHTTPRequest를 사용해 보려고 하는데, 클라이언트에서 POST 방식으로 보낸 인자의 한글이 서버에서 깨져서 나옵니다. 원래 서버 및 페이지에서 EUC-KR을 사용했는데, 이게 원인인가 싶어서 UTF-8로 바꾼(php.ini의 default_charset) 후에도 여전히 깨지는군요. ( 하하하 => %uD558%uD558%uD558 )

요청을 받는 서버쪽 php 페이지에서 출력한 한글이 다 깨지는 것으로 보아, XMLHTTPRequest에서 한글 텍스트를 어떻게 하는 것 같은데요, FireFox에서도 깨지는 것으로 보아, MSXML의 문제도 아닌 것 같습니다.

XMLHTTPRequest를 이용하여 POST방식의 한글 인자를 서버로 넘기는 데에 성공하신 분, 답변 부탁드립니다.. ^^;

### 클라이언트 요청의 HTTP Header ###
POST /dev/mykms/conversion_handle.php HTTP/1.1
Accept: */*
Accept-Language: ko
Referer: http://www.myleo.net:800/dev/mykms/index.php?location=3&action=edit&id=16
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: www.myleo.net:800
Content-Length: 154
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: myleo_no=1; myleo_id=jykim; myleo_name=%B1%E8%C1%F8%BF%B5; clickedFolder=FD_16%5E; highlightedTreeviewLink=FD_16; user_id=%B1%E8%C1%F8%BF%B5; user_status=A; user_email=jykim%40myleo.net; user_admin=Y; user_number=1; user_name=%B1%E8%C1%F8%BF%B5; user_phone_c=016-682-0298

pageContent=Testing%20Purpose%0D%0A%0D%0A%20*%20%uD558%uD558%uD558%0D%0A%20*%20%uD638%uD638%uD638%0D%0A%20*%20%uD55C%uAE00%uC774%20%uB41C%uB2E4.&ruleCode=

### 서버 응답의 HTTP Header ###

HTTP/1.1 200 OK
Date: Wed, 21 Sep 2005 04:17:36 GMT
Server: Apache/2.0.54 (Unix) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Content-Length: 102
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8


Testing Purpose

 * %uD558%uD558%uD558 (원래 하하하)
 * %uD638%uD638%uD638 (원래 호호호)
 * %uD55C%uAE00%uC774 %uB41C%uB2E4.




  김진영    05-09-21 13:30 
문제를 약간 돌려서 해결하자면, XMLHTTPRequest에 넘기는 한글을 아스키로 인코딩하거나, %uD558%uD558%uD558 와 같은 메시지를 디코딩하면 될 것 같은데, 이 방법을 아시는 분 답변주세요.. ^^;; 
 
문제를 약간 돌려서 해결하자면, XMLHTTPRequest에 넘기는 한글을 아스키로 인코딩하거나, %uD558%uD558%uD558 와 같은 메시지를 디코딩하면 될 것 같은데, 이 방법을 아시는 분 답변주세요.. ^^;;
 
  김진영    05-09-21 13:57 
더 찾아보니 x-www-form-urlencoded라는 방식으로 POST로 넘긴 모든 값이 인코딩된다고 하는군요.. 
 
더 찾아보니 x-www-form-urlencoded라는 방식으로 POST로 넘긴 모든 값이 인코딩된다고 하는군요.. 
 
  김소하    05-09-21 14:06 
저도 한글 때문에 고민했다가 이렇게 해결한 적이 있네요...

보내는 페이지에선
자바스크립트로 문자열을 encodeURIComponent(str) 이런식으로 변환해서 넘기고..

받는 PHP페이지에선
$str = iconv("UTF-8", "CP949", $_POST[str]); 이런 식으로 처리해보세요. 
 
저도 한글 때문에 고민했다가 이렇게 해결한 적이 있네요...

보내는 페이지에선
자바스크립트로 문자열을 encodeURIComponent(str) 이런식으로 변환해서 넘기고..

받는 PHP페이지에선
$str = iconv("UTF-8", "CP949", $_POST[str]); 이런 식으로 처리해보세요.
 
  바람이    05-09-21 14:31 
즉, xmlhttp는 유니코드를 지원하므로...받을때 //김소하님처럼 하면 되겠죠... 
 
즉, xmlhttp는 유니코드를 지원하므로...받을때 //김소하님처럼 하면 되겠죠...
 
  김진영    05-09-21 19:14 
감사합니다~ 덕분에 해결했습니다~ 
 
감사합니다~ 덕분에 해결했습니다~
 
  엘리  06-02-27 13:20 
뷁, 샾, 똠 같은 문자가 CP949썼더니 잘 되네요..
감사합니다. 그리고 encodeURIComponent로 인해 특수문자 사용까지 되고요..
김소하님 정말 감사드립니다. 
-------------------------------------------------------------------------------------------------------------------------
출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=60301<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 16:55:28 jQuery에서 이동 됨]</div>
추천
0

댓글 0개

전체 5,352
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT