AJAX로 EUC-KR 값 올바르게 전송하는 방법 > 그누4 팁자료실

그누4 팁자료실

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

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이 필요합니다.

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

댓글 4개

전체 103 |RSS
그누4 팁자료실 내용 검색

회원로그인

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