posted by 지니우스 2017. 5. 31. 13:18

출처: http://mainia.tistory.com/2428


1. escape(), unescape() 함수


▼ 아스키문자에 해당하지 않는 문자들은 모두 유니코드 형식으로 변환해 줍니다. 그러니까 16진수 형태로 바꿔주는 것이죠. 표기법은 1바이트일때 %XX 이며 2바이트 일때는 %uXXXX 입니다. 앞에 u 가 하나 더 붙죠. 그리고 16진수에서는 문자 2개가 하나의 바이트를 이룹니다. 


[입력]

document.write(escape("인코딩, escape"));


[출력]

%uC778%uCF54%uB529%2C%20escape



2. encodeURI() 함수


 encodeURI 는 URL 주소표시를 나타내는 앞자리 특수문자는 인코딩하지 않습니다. 인코딩 하지 않는 문자는 ": ; / = ? &" 입니다. 주소를 통해 넘기는 파라미터를 인코딩할때 사용합니다.


[입력]

document.write(escape("http://녹두장군.com")+ "<br/>");

document.write(encodeURI("http://녹두장군.com"));


[출력]

http%3A//%uB179%uB450%uC7A5%uAD70.com

http://%EB%85%B9%EB%91%90%EC%9E%A5%EA%B5%B0.com



3. encodeURLComponent() 함수


 encodeURI 와 달리 주소를 나타내는 특수문자도 인코딩을 하게 됩니다. 모든 문자를 인코딩 하기 때문에 경로를 나타내는 /file/exe/index 값이 있다면 "/" 도 인코딩하기 하게 됩니다. 이렇게 되면 서버에서는 인식을 못합니다. 이럴때는 encodeURI 를 사용해야 합니다. 다시 디코딩을 하시려면 decodeURIComponent() 함수를 사용합니다.


[입력]

document.write(encodeURI("http://mainia.tistory.com?id=홍길동&phone=010") + "<br/>");

document.write(encodeURIComponent("http://mainia.tistory.com?id=홍길동&phone=010"));


[출력]

http://mainia.tistory.com?id=%ED%99%8D%EA%B8%B8%EB%8F%99&phone=010

http%3A%2F%2Fmainia.tistory.com%3Fid%3D%ED%99%8D%EA%B8%B8%EB%8F%99%26phone%3D010