자바스크립트 urlencode(), urldecode(), rawurlencode(), rawurldecode()

by 조쉬 posted Oct 27, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

자바스크립트에서 URL을 처리해서 리다리렉트 시커거나 하는 등의 작업을 할 때  한글이 섞여 있는 URL의 경우 이 한글문제 때문에 제대로 수행되지 않는 경우가 있다.

서버스크립트라면 URL인코딩 함수(PHP의 경우 urlencode())를 사용하면 되지만, 자바스크립트에서는 이런 역할(예를 들면 '가'를 '%EA%B0%80'으로 인코딩 해주는 역할)을 해 주는 함수가 없기 때문에 이를 직접 정의해서 사용하면 된다.


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';

        }));

}