IT/jquery_javascript

PHP EUC-KR ajax 한글 깨짐 처리.

당양부부34 2016. 5. 30. 11:42

1. Front Page

$.ajax({

 url:"/test.php",

 data:{ 

  mode : "ins",

  name : encodeURIComponent(userName)

 },

 type:"POST",

....

});

 

encodeURIComponent는 알겠지만 URL 형식으로 데이터를 넣을 수 있도록 문자열을 인코드한다. 결과적으로 name에는 %ED%97%90%EB%AD%90%EC%95%BC 뭐 이런식으로 데이터가 저장된다. 경우에 따라선 자동으로 변환해주나 브라우저 호환성을 위해 강제로 변환하게 하자.

 

2. Server Page

<?php

$name = $_GET['name'];

// 1. 설명이 필요한가? 전달되는 방법(method)이 다르면 당연히 거기에 맞게 변경해준다.

 

$name = urldecode($name); 

// 2. %ED%97... 식으로 변환된 문자열을 본래 형태의 문자열로 변환한다. 이 반대 역할의 함수는 당연히 urlencode.

 

$name = iconv("utf-8","euc-kr",$name); 

// 3. 변환 이후에는 utf-8로 데이터가 남아서 이걸로 지지고 볶을 순 없다. euc-kr로 변환 후 볶아준다.

 

$name = mb_convert_encoding($name,"euc-kr","utf-8"); 

// 4. 일부 서버에서는 iconv 함수를 지원하지 않는 경우도 간혹 있다. 그럴 경우 mb_string 계열 함수를 통해 변환을 해준다.

 

// 5. 필요하면 추가적인 보안조치(SQL Injection, XSS 필터등)를 해준다.

// 6. echo

echo iconv("euc-kr", "utf-8", "테스트 발송 되었습니다.   ");

// 7. PROFIT!

?>