'encodeURI'에 해당되는 글 1건

  1. 2010.09.22 escape/encodeURI/encodeURIComponent
자바스크립트에서 인코딩을 담당하는 함수입니다.

여기서 말하는 인코딩이란, 네트워크를 통해서 정보를 공유할 때 어떤 시스템에서나 읽을 수 있는 ASCII 문자로 바꿔주는 것을 말합니다. 모든 네트워크를 통한 전송에는 ASCII 문자가 기반이 되는데, 특히 한글이나 특수문자의 경우 이를 2진수 바이트코드로 변환해서 전송하면 받는 상대편의 시스템에 따라 잘못 해석되거나, 해석이 불가능할 수 있기 때문입니다.
이를 해결하기 위해 모든 시스템에서 공통으로 읽을 수 있는 ASCII 문자로 바꿔서 데이터를 전송할 필요가 있습니다.

1.escape()
아래와 같이 열거된 아스키문자가 아니라면 모두 유니코드 형식으로 변환합니다.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890
@*-_+./
변환된 형식은 16진수 형식으로 표시되며 1바이트 문자는 %XX 형태로, 2바이트 문자는 %uXXXX 형태로 변환됩니다.
1바이트 문자는 빈칸(%20)을 들 수 있고, 2바이트 문자는 한글(%uD55C%uAE00)이 있을 수 있습니다.

가끔 인터넷검색을 하면 주소창에 %XX형식의 문자들이 들어있는 것을 볼 수 있는데, 이는 인코딩 된 것의 한 종류라고 볼 수 있습니다.

가끔은 홈페이지의 자바스크립트나 HTML 소스, 음원URL을 보기 힘들게 하기 위해 사용하기도 하지만, 이는 자바스크립트의 인코딩을 아는 자라면 어렵지 않게 풀어 사용할 수 있습니다.


2.encodeURI()
기본적으로는 escape()와 비슷한 동작을 하지만 인터넷 주소 표시에 쓰이는 특수문자들은 인코딩하지 않습니다.
인터넷 주소 표시 특수문자 : ; / = ? &  등
그래서 보통은 파라미터를 전달하는 인터넷주소(URL) 전체를 인코딩할 때 사용합니다.


3.encodeURIComponent()
기본적인 동작은 역시 escape()와 비슷하지만 인터넷 주소표시에 쓰이는 모든 문자를 추가로 인코딩합니다.

그래서 인터넷주소(URL) 전체를 인코딩할 때는 사용할 수 없고, 넘기는 필드 하나하나를 따로 인코딩할 때 사용합니다.
그 이유는 넘어가는 값이 text="test=&테스트" 이와 같이 text라는 필드 값이 test=&테스트인 경우 그냥 encodeURI()로 인코딩 하면, '=' 나 '&'는 인코딩되지 않아서 필드 값을 처리할 때 데이터 값이 아닌 여러 개의 필드를 넘기는 명령어로 인식할 수 있기 때문입니다.

하지만, "http://test.com/test.php?text=테스트" 와 같은 URL 전체를 encodeURIComponent()로 인코딩하게 되면 : / ? 를 모두 인코딩하여 주소를 인식할 수 없게 됩니다.



인코딩 값을 서버에서 디코딩 처리하고자 하실 때는

Java 경우 URLDecoder.decode(String, "UTF-8") / 여기서 UTF-8 은 HTML Page charset 입니다.
Posted by 갈가마귀
이전버튼 1 이전버튼