-
[JavaScript] URL 인코딩, 디코딩 알아보기Node.js/자바스크립트 기초 2024. 4. 3. 15:20반응형
자바스크립트에서 URL 인코딩, 디코딩 해보기
우리가 웹사이트를 접속할 때, 인터넷 브라우저에 URL(Uniform Resource Locator)이라고 하는 주소를 적어넣습니다. URL은 인터넷에서 웹 페이지, 이미지, 비디오 등 리소스의 위치를 가리키는 문자열이라고 정의할 수 있지요. 예를 들어서, 구글에서
안녕
이라는 말을 검색한다면 아래와 같이 표현할 수 있습니다.https
://www.google.com
/search
?q=%EC%95%88%EB%85%95
URL의 구조
이 때, URL을 이루는 구성요소를 알아본다면 위 주소가 어떤 말을 의미하는지 바로 알 수 있습니다. URL의 구성요소는 크게 4가지로 나눌 수 있는데, 각각 Scheme(스키마), Authority(권한), Path(리소스 경로), Query(매개변수) 라고 부릅니다. 위 주소에서 해당 4가지 요소를 나눠가면서 설명을 해 보면 아래와 같이 나타낼 수 있지요.
- Scheme:
https
와 같이 나타나는 프로토콜 정보입니다. - Authority:
www.google.com
와 같이 나타나는 도메인 이름(또는 IP 주소), 포트 번호입니다. - Path:
search
와 같이 나타나는 리소스 위치입니다. - Query:
q=%EC%95%88%EB%85%95
와 같이 나타나는 추가 작업을 위한 매개변수입니다.
해당 URL에서 q라는 이름으로 입력되는 매개변수가 검색어에 해당합니다. 그런데, 한국어
안녕
대신%EC%95%88%EB%85%95
라는 값이 들어가 있는 것을 확인할 수 있지요.URL 인코딩
URL은 전세계의 컴퓨터가 동일한 주소를 입력하면 동일한 페이지로 이동할 수 있는 규칙입니다. 그래서 모든 컴퓨터가 처리할 수 있는 언어인 영어로 입력하게 되지요. 한국어의 경우, 한국어판 OS를 설치한 컴퓨터에서는 처리 가능하지만, 외국어 OS 컴퓨터에서는 정상적으로 입출력이 불가능합니다. 그래서, 영어 이외의 언어는 영문 OS 컴퓨터에서 처리할 수 있는 문자로 변경을 해 줘야 하지요. 이것이 URL 인코딩(Encoding)이 필요한 이유입니다.
그리고, 띄어쓰기나 일부 특수문자를 문자열로 처리할 수 없는 프로그래밍 언어의 경우 해당 문자를 추가로 인코딩해 줘야 합니다. 자바스크립트(JavaScript)는 프로그래밍 언어의 특성상 URL 정보를 자주 사용하기 때문에, 이 인코딩 작업을 내장 함수로 지원하고 있는데요, 이것이 바로
encodeURIComponent()
함수입니다. 해당 함수의 정의는, URI(Uniform Resource Identifier, URL의 상위 개념)의 특정한 문자를 UTF-8로 인코딩해서 이스케이프 문자로 반환하는 함수입니다.encodeURIComponent('안녕@ 반가워');
'%EC%95%88%EB%85%95%40%20%EB%B0%98%EA%B0%80%EC%9B%8C'
위 코드를 읽어보면,
안녕@ 반가워
라는 문자열이%EC%95%88%EB%85%95%40%20%EB%B0%98%EA%B0%80%EC%9B%8C
로 바뀐것을 확인할 수 있지요. 이렇게encodeURIComponent()
함수는 매개변수로 입력된 값을 인코딩된 문자열로 반환해 주는 기능을 가지고 있습니다.URL 디코딩
인코딩을 할 수 있다면, 인코딩된 문자열을 원본 값으로 복구할 수도 있어야겠죠? 이 작업을 우리는 디코딩(Decoding)이라고 부릅니다. 그리고, 어렴풋이 눈치채셨겠지만
decodeURIComponent()
함수를 이용해서 디코딩 작업을 할 수 있지요.decodeURIComponent('%EC%95%88%EB%85%95%40%20%EB%B0%98%EA%B0%80%EC%9B%8C')
'안녕@ 반가워'
이렇게 URL 인코딩, 디코딩을 활용한다면 URL 정보를 변형하거나 원하는 페이지에 접속하는 작업을 손쉽게 자동화할 수 있습니다.
참고자료
반응형'Node.js > 자바스크립트 기초' 카테고리의 다른 글
[JavaScript] Crypto 라이브러리를 이용한 암호화 알고리즘 이용하기 (0) 2024.06.25 [Node.js] 자바스크립트로 파일 읽고 쓰는법 알아보기 (0) 2024.04.05 [JavaScript] var, let, const의 차이를 이해하고 변수, 상수 선언하기 (0) 2024.04.02 - Scheme: