어둠사자

AJAX로 EUC-KR 값 올바르게 전송하는 방법

입력폼을 이용해 AJAX로 DB에 문자열을 올릴때는
그 문자열이 강제로 UTF-8로 올라가 EUC-KR 환경인 경우 문제가 생기기도 합니다.

해결 방법은 EUC-KR로 된 문자열을 가공하여 전송하는 방법밖에 없습니다.
escape, base64 등으로 바꾸어 서버에서 복호화시켜 처리해야하죠.

여기선 escape 방식을 다뤄보겠습니다.
* Jquery 기준입니다.

* 클라이언트 측 Javascript
function updateElementName(url, name) {
$.ajax({
type: 'POST',
url: url,
data: { name: escape(name) },
success: function() {
alert("success!");
}
});
}

* 서버 측 PHP
function Unescape($str){
return urldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', 'UnescapeFunc', $str));
}

// 서버에 따라 오류가 있으므로 EUC-KR일 때 cp949라고 명시(그누보드에서 이용할 때)
function UnescapeFunc($str){
global $g4;

if (strtolower($g4['charset']) == 'euc-kr') {
$to_charset = "cp949";
} elseif ($g4['charset']) {
$to_charset = $g4['charset'];
} else {
$to_charset = "UTF-8";
}

return iconv('UTF-16LE', $to_charset, chr(hexdec(substr($str[1], 2, 2))).chr(hexdec(substr($str[1],0,2))));
}

$_POST['name'] = Unescape($_POST['name']);

* base64의 경우도 비슷하지만 escape와 달리 자바스크립트쪽에서 추가 function이 필요합니다.

이런 문제로 골치썩고계신 분들이 있을까싶어 올립니다.
|

댓글 4개

무조건 추추천 ^^
euc-kr 버전 만들 때 참고해야 겠네요. ㅊㅊ
유용한 팁 추천합니다.
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
13년 전 조회 4,653
13년 전 조회 5,926
13년 전 조회 4,536
13년 전 조회 3,427
13년 전 조회 4,071
13년 전 조회 4,386
13년 전 조회 5,100
13년 전 조회 4,860
13년 전 조회 4,806
13년 전 조회 7,723
13년 전 조회 7,297
13년 전 조회 4,778
13년 전 조회 6,103
13년 전 조회 8,854
13년 전 조회 5,460
13년 전 조회 5,298
13년 전 조회 4,967
13년 전 조회 8,993
13년 전 조회 6,018
13년 전 조회 4,956
🐛 버그신고