javascript의 escape(), encodeURI(), encodeURIComponent()함수들에 대해서,
어느 문자가 인코딩 되고,어느문자가 인코딩되지 않는지, 알아보기 힘들기 때문에 정리해둠.

우선은 대상의 범위는 %20(공백문자)부터 %7E(~)까지

원 데이터 

 !"#$%&'()*+,-./
0123456789
:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[\]^_`
abcdefghijklmnopqrstuvwxyz
{|}~

escape()

%20%21%22%23%24%25%26%27%28%29*+%2C-./
0123456789
%3A%3B%3C%3D%3E%3F@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D%7E%7F

encodeURI()

%20!%22#$%25&'()*+,-./
0123456789
:;%3C=%3E?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D~%7F

encodeURIComponent()

%20!%22%23%24%25%26'()*%2B%2C-.%2F
0123456789
%3A%3B%3C%3D%3E%3F%40
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D~%7F

정리

  • 모든 함수가[0-9A-Za-z]는 변환하지 않음.
  • escape()가 변환하지 않는 기호는 *+-./@_ 임.
  • encodeURI()가 변환하지 않는 기호는 !#$'()*+,-./:;=?@_~ 임.
  • encodeURIComponent()가 변환하지 않는 기호는 !'()*-._~ 임.
  • 다중 바이트나 코드에 대해서는, 예를들면 UTF-8의 「あ」는 escape()의 경우 %u3042, encodeURL() 및 encodeURIComponent()의 경우 %E3%81%82 임.

덤.
변환 툴1

source :
escape() :
encodeURI() :
encodeURIComponent() :

변환 툴2 

input :
output :
decode by :
출처 : http://groundwalker.com/blog/2007/02/javascript_escape_encodeuri_encodeuricomponent_.html
AND