테스트 사이트 - 개발 중인 베타 버전입니다

[펌] euc-kr페이지에서 AJAX연동시 한글 깨짐 현상(php)

· 14년 전 · 2090
AJAX는 기본적으로 UTF-8 인코딩을 사용하기 때문에
인코딩이 euc-kr(KSC5601)인 페이지에서 ajax를 사용하게 되면 한글이 깨지게 된다.

이러한 현상을 해결하기 위해서는 통신 시 적절한 변환처리가 필요하다.

페이지에서 요청을 보낼 때
var val = encodeURIComponent("한글");
/*
값을 UTF-8 형식으로 인코딩 해 준다. "한글" 이라는 문자열은 0xED959C, 0xEAB880이므로 val에는 %ED%95%9C%EA%B8%80이라는 문자열이 들어간다.
*/

PHP에서 받을 때
$value = iconv("UTF-8", "CP949", rawurldecode($value));
/*
http://www.php.net/manual/en/function.rawurldecode.php
먼저 %로 구분된 문자열을 디코딩한다. 이것의 결과는 UTF-8 문자열이 되며,
iconv를 사용하여 euc-kr문자열로 변환하여 준다.
*/


PHP에서 페이지로 보낼때는 반대로 해 주면 된다.
PHP에서 보낼 때
$value = rawurlencode(iconv("CP949", "UTF-8", $value));

페이지에서 받을 때
val = decodeURIComponent(val);



참고로,
스크립트에서 XML노드의 텍스트를 담고 있는 속성은
IE에서는 노드.text 이지만 FF에서는 노드.textContent 이다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 16:57:14 JavaScript에서 이동 됨]</div>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
1959
14479
14475
14474
14469
14466
29747
14464
14463
1950
1943
1938
14460
29743
14453
29738
1936
24146
25894
1923
1919
1916
1913
24135
24131
25885
14449
1895
1891
1886
14443
1875
25884
14442
1872
29735
14441
1861
14438
14434
1836
29734
29727
14430
14426
정규표현식 왜 서버는... 3
14425
1828
1813
29725
29719
1808
1804
14423
24120
25866
14420
25863
1784
1777
25859
14419
1775
29717
1768
1759
1744
14416
14414
14413
1737
14412
1718
1714
1704
1700
29714
1699
14411
1696
1686
1677
1672
1671
25853
1660
1654
1650
25851
25850
1647
1588
1586
1580
1567
14408
1553
24109
1551
25849
25848