콘텐츠로 건너뛰기

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/ 페이지에서 어떻게 동작하는지 확인하실 수 있습니다.

이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.

This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.

댓글 남기기