반응형
자바 스크립트를 이용해서 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()를 쓰면 될 것 같다.
반응형
댓글