AJAX로 EUC-KR 값 올바르게 전송하는 방법 정보
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이 필요합니다.
이런 문제로 골치썩고계신 분들이 있을까싶어 올립니다.
그 문자열이 강제로 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이 필요합니다.
이런 문제로 골치썩고계신 분들이 있을까싶어 올립니다.
추천
3
3
댓글 4개

무조건 추추천 ^^

euc-kr 버전 만들 때 참고해야 겠네요. ㅊㅊ

감사합니다~~

유용한 팁 추천합니다.