toggle menu

[JavaScript] encodeURIComponent 함수

2013. 3. 18. 11:06 JavaScript
Uniform Resource Identifier (URI) 형태로 텍스트 문자열을 인코딩 해주는 함수이다.
encodeURIComponent( "인코딩할 문자열" ) 의 형태로 사용하게 된다.
인코딩된 문자열은 decodeURIComponent에 의해 원래 문자열로 복원된다. 

단, encodeURIComponent 함수는 모든 문자에 대해 인코딩하기 때문에 /폴더1/폴더2 와 같은 슬래시가 포함된 경로 문자열 같은 경우 웹서버에서 경로를 제대로 인식하지 못할 수도 있다는 점을 유의해야 한다. /(슬래시)를 살려둔채로 인코딩을 하고 싶다면, 슬래시 등 인터넷 주소 체계에서 자주 사용되는 문자는 제외하고 인코딩해주는 encodeURI 함수를 사용해야 한다.

참고로, encodeURIComponent 함수는 IE8 이상의 브라우저에서 모두 지원되고 있다. 


var uriEncode = encodeURIComponent ("www.Not a URL.com");
var uriDecode = decodeURIComponent(uriEncode);

document.write(uriEncode);
document.write("<br/>");
document.write(uriDecode);

// Output:
// www.Not%20a%20URL.com
// www.Not a URL.com


만약 RFC 3986을 좀더 엄격하게 준수하길 원한다면, 문자열들이 URI 한정 용도들에 정형화되어 있지 않더라도 다음을 통해 안전하게 사용할 수 있다.

function fixedEncodeURIComponent (str) {
	return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}



참고할만한 링크
http://realmind.tistory.com/191

JavaScript 관련 포스팅 더보기