본문 바로가기
카테고리 없음

[javascript] encodeURI(), encodeURIComponent(), escape() 함수, 차이점

by 꼬마낙타 2019. 5. 19.
반응형

자바 스크립트를 이용해서 URL, URI 문자열을 다룰 때 특수 문자들을 별도로 처리해줘야 한다. URL/URI 문자열에 %, '' 같은 문자열이 들어가면 의도하지 않은 동작을 할 수 있다. 따라서 URL에 사용할 특수 문자들은 RFC 3986에 정의되어 있는 규칙에 따라 Escape 처리 해줘야 한다.

 

URL에 사용할 특수 문자들을 처리하기 위해 encodeURI(), encodeURIComponent(), escape() 함수를 사용 할 수 있다. 각 함수들의 차이점은 다음과 같다. 

 

encodeURI() / decodeURI() 

: 최소한의 문자만 인코딩함 (; / ? : @ & = + $ , - _ . ! ~ * ' ( ) #) 이런거 안함

 

encodeURIComponent / decodeURIComponent

: 알파벳과 숫자 등을 제외한 대부분의 문자를 인코딩

 

escape() / unescape()

: encodeURI() 와 encodeURIComponent() 의 중간정도로 인코딩 

 [A-Za-z0-9] 문자와 @*-_+./ 정도를 제외하고 모두 인코딩함

 

각 함수의 리턴 값 차이를 확인하기 위해 다음 코드를 실행시켜 보자. 

<script type="text/javascript">

var url="http://dev.feeden.net/search?q=검색어"

document.write('<p>URL : ' + url + '</p>');

document.write('<p>encodeURI : ' + encodeURI(url) + '</p>');
document.write('<p>escape : ' + escape(url) + '</p>');
document.write('<p>encodeURIComponent : ' + encodeURIComponent(url) + '</p>');

</script>

이 코드를 실행하면 다음과 같은 결과를 얻게 된다. 

 

 

문자열을 URL의 파라미터로 사용하는 경우인 encodeURIComponent() 함수를 쓰면 되고, URL로 사용하기 위해서는 encodeURI()를 쓰면 될 것 같다.

반응형

댓글