2020년 2월 24일 월요일

php나 다른 언어에서 URLEncoding한 값을 자바스크립트에서 URLEncoding 한 값을 비교하기.

php 또는 c언어 계열에서 urlencoding을 하면 느낌표같은 특수문자가 인코딩 되지만, 자바스크립트에서는 인코딩 되지 않고 그대로 나온다.(encodeURIComponent 함수)

그래서 자바스크립트에서 php방식으로 urlencoding을 하려면 아래의 함수를 이용하도록 하자.
자바스크립트가 왜 이렇게 되어있는지는 잘 모르겠지만...

php 함수 대타 용 javascript..!

function urlencode(str) {
    str = (str + '').toString();
    return encodeURIComponent(str)
        .replace(/!/g, '%21')
        .replace(/'/g, '%27')
        .replace(/\(/g, '%28')
        .replace(/\)/g, '%29')
        .replace(/\*/g, '%2A')
        .replace(/%20/g, '+');
}



function urldecode(str) {
    return decodeURIComponent((str + '')
        .replace(/%(?![\da-f]{2})/gi, function() {
            return '%25';
        })
        .replace(/\+/g, '%20'));
}



function rawurlencode(str) {
    str = (str + '').toString();
    return encodeURIComponent(str)
        .replace(/!/g, '%21')
        .replace(/'/g, '%27')
        .replace(/\(/g, '%28')
        .replace(/\)/g, '%29')
        .replace(/\*/g, '%2A');
}



function rawurldecode(str) {
    return decodeURIComponent((str + '')
        .replace(/%(?![\da-f]{2})/gi, function() {
            return '%25';
        }));
}

댓글 없음: