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
%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
변환 툴2