2 min read

Encode URI

Encode URI

네트워크를 통해 정보를 주고 받기 위해서는 아스키 문자로 변환하여 요청해야 하는 경우가 있습니다.

대표적으로 URL을 통해 웹서버에 요청을 보내는 경우입니다.

이때, 정확한 요청을 하기 위해서는 전달할 때 모든 시스템에서 공통적으로 처리가능한 ASCII 문자만을 전달하는 것이 좋습니다.

이를 간단하게 처리하기 위해 Javascript에는 아래 세개의 함수를 지원합니다.

escape(), encodeURI(), encodeURIComponent() 입니다.

escape() 함수

escape 함수는 아래 문자열을 제외하고, 1byte 문자는 %xx 2byte 문자는 %uxxxx 형식으로 변환합니다.

xx 는 16진수 표현이며, 유니코드 정의에 의한 코드값이 16진수로 맵핑됩니다.

ABCDEFGHIGKLMNOPQRSTUVWXYZ
abcdefghigklmnopqrstuvwxyz
1234567890
@*-_+./

MDN: escape()

encodeURI() 함수

escape() 함수와 비슷한 동작을 하며, URL 표시 문사로 사용되는 특수문자들은 인코딩하지 않습니다.

추가로 인코딩하지 않는 특수문자는 아래와 같습니다.

:;=?&

MDN: encodeURI()

encodeURIComponent() 함수

역시 escape() 함수와 비슷하게 동작하며, 영문자, 숫자외의 모든 문자를 인코딩합니다.

따라서, URL 문자열을 encodeURIComponent() 함수로 전달하여 산출된 결과 문자열은 URL로 사용할 수 없습니다.

이를 활용하면 이전 페이지를 매개변수로 전달할 때, 전체 URL ~쿼리문자열을 포함한~을 매개변수로 전달할 수 있습니다.

MDN: encodeURIComponent()

데모

간단한 페이지를 작성했습니다.

http://bbon.me/js-encode-uri/ 페이지에서 어떻게 동작하는지 확인하실 수 있습니다.