본문 바로가기

프로그래밍/WEB FRONT END

[자바/자바스크립트] urlencoding

자바스크립트(JavaScript)에서는 다음의 함수들로, HTML 페이지 주소를 인코딩/디코딩 한다.

encodeURI() / decodeURI()


최소한의 문자만 인코딩 한다.
; / ? : @ & = + $ , - _ . ! ~ * ' ( ) #  문자는 인코딩 하지 않는다. 

ex) http://openeg.co.kr/key=한글

     http://openeg.co.kr/key=%ED%95%9C%EA%B8%80


encodeURIComponent() / decodeURIComponent()


알파벳과 숫자외의, 대부분의 문자를 모두 인코딩한다.
ex) http://openeg.co.kr/key=한글
     http%3A%2F%2Fopeneg.co.kr%2Fkey%3D%ED%95%9C%EA%B8%80


escape() / unescape()
예전부터 있던 오래된 함수다.   (* @ - _ + . /) 문자는 인코딩하지 않는다.


ex) http://openeg.co.kr/key=한글

      http%3A//openeg.co.kr/key%3D%uD55C%uAE00




자바에서는 URLEncoder/URLDecoder 클래스를 사용하여 웹에서 통용되는 'x-www-form-urlencoded'형식으로 변환하거나 인코딩된 문자열을 다시 역변환하는 작업을 수행한다.


URLEncoder는 대소문자, 숫자, 밑줄을제외한 URL에 있는 모든 문자를 코드화 한다.


URLEncoder 변환규칙 

- 아스키문자(a~z, A~Z, 1~9),  '.',  '-',  '*',  '_' : 그대로 전달 

- 공백문자(' ') : '+' 기호로 변환

- 기타문자 : '%xy' 와 같이 세 개의 문자로 변환

                    xy는 해당 문자의 ASCII코드를 16진수화한 결과를 두자리의 대문자로 나타낸 것.


(사용예)

String data= URLEncoder.encode("http://한글/", "UTF-8");

String origin= URLDecoder.decode(data, "UTF-8");