웹사이트를 이용하다 보면 주소(URL)에 %20, %2F, %3A 같은 이상한 문자열이 포함된 것을 본 적이 있을 것입니다. 처음에는 오류처럼 보이지만 사실은 URL Encoding(URL 인코딩) 이라는 중요한 기술입니다.
API를 사용하거나 웹 개발, 자동화 도구(Make, n8n, Zapier)를 활용하다 보면 URL Encoding을 이해하지 못해 요청이 실패하는 경우도 적지 않습니다. 이번 글에서는 URL Encoding의 개념부터 필요한 이유, 실제 예시와 활용법까지 쉽게 정리해 보겠습니다.
URL Encoding이란?
URL Encoding은 URL에서 사용할 수 없는 문자나 특수문자를 안전하게 전송할 수 있도록 특정 형식으로 변환하는 과정입니다.
인터넷 주소(URL)는 사용할 수 있는 문자가 정해져 있습니다.
예를 들어 다음과 같은 문자는 특별한 의미를 가지고 있습니다.
- 공백(Space)
- 한글
- &, ?, =
- /
- %
이러한 문자를 그대로 URL에 넣으면 브라우저나 서버가 다른 의미로 해석할 수 있기 때문에 퍼센트(%)와 16진수 코드로 변환하여 전달합니다.
이를 Percent Encoding이라고도 부릅니다.
왜 URL Encoding이 필요할까?
URL은 웹 브라우저와 서버가 약속한 규칙에 따라 동작합니다.
만약 공백을 그대로 넣는다면
https://example.com/search?keyword=hello world
브라우저마다 해석이 달라질 수 있습니다.
그래서 실제로는 다음처럼 변환됩니다.
https://example.com/search?keyword=hello%20world
즉,
공백 → %20
으로 변환되어 안전하게 서버까지 전달됩니다. 이러한 변환 덕분에 데이터가 손상되지 않고 정확하게 전달됩니다.
자주 사용하는 URL Encoding 예시
아래 문자들은 가장 자주 사용됩니다.
| 원본 문자 | Encoding 결과 |
|---|---|
| 공백 | %20 |
| ! | %21 |
| # | %23 |
| $ | %24 |
| & | %26 |
| / | %2F |
| : | %3A |
| ? | %3F |
| = | %3D |
| 한글 | UTF-8 형태로 변환 |
예를 들어
안녕하세요
는 URL에서는 긴 퍼센트 코드 형태로 변환됩니다.
한글은 왜 더 길게 변환될까?
영문은 대부분 1Byte 문자입니다.
반면 한글은 UTF-8에서 3Byte로 저장됩니다.
예를 들어
자동화
라는 문자열은 URL Encoding을 하면
%EC%9E%90%EB%8F%99%ED%99%94
처럼 매우 길어집니다.
처음 보면 암호처럼 보이지만 UTF-8 데이터를 16진수로 표현한 결과일 뿐입니다.
API를 사용할 때 URL Encoding이 중요한 이유
API를 호출할 때 가장 많이 발생하는 오류 중 하나가 바로 Encoding 문제입니다.
예를 들어 검색 API에서
검색어=노코드 자동화
를 그대로 전달하면 공백 때문에 오류가 발생할 수도 있습니다.
올바른 요청은
검색어=노코드%20자동화
특히 다음과 같은 서비스에서는 거의 필수적으로 사용됩니다.
- REST API
- OpenAPI
- Google API
- 네이버 API
- 카카오 API
- Make
- n8n
- Zapier
자동화 플랫폼을 사용할 때도 변수 안에 공백이나 한글이 포함되어 있다면 URL Encoding을 먼저 적용해야 정상적으로 요청이 처리되는 경우가 많습니다.
제가 처음 API 자동화를 만들었을 때도 검색어에 공백이 포함되어 요청이 계속 실패한 적이 있었습니다. 원인을 찾기 위해 헤맸지만, URL Encoding을 적용하자 바로 정상적으로 응답이 반환되었습니다. 이후에는 API를 다룰 때 가장 먼저 인코딩 여부를 확인하는 습관이 생겼습니다.
URL Decoding이란?
Encoding의 반대 과정이 URL Decoding입니다.
예를 들어
hello%20world
를 Decoding하면
hello world
가 됩니다.
웹 브라우저는 서버로부터 받은 데이터를 사람이 읽을 수 있도록 자동으로 Decoding하여 보여주는 경우가 많습니다.
URL Encoding을 쉽게 하는 방법
직접 퍼센트 코드를 외울 필요는 없습니다.
대부분의 개발 언어에서는 자동으로 지원합니다.
예를 들어 JavaScript에서는
encodeURIComponent()
함수를 사용하면 되고,
Python에서는
urllib.parse.quote()
함수를 이용하면 간단하게 Encoding할 수 있습니다.
또한 다양한 온라인 URL Encoder 도구를 활용하면 복잡한 문자열도 손쉽게 변환할 수 있습니다.
URL Encoding을 이해하면 자동화도 쉬워진다
URL Encoding은 단순히 웹 주소를 변환하는 기술이 아니라 웹 통신의 기본 규칙이라고 볼 수 있습니다.
특히 API 연동이나 노코드 자동화, 웹 개발을 시작하는 분이라면 반드시 알아두어야 하는 개념입니다.
핵심만 정리하면 다음과 같습니다.
- URL에서 사용할 수 없는 문자를 안전한 형태로 변환하는 과정이다.
- 공백은 %20으로 변환된다.
- 한글은 UTF-8 기반의 퍼센트 코드로 변환된다.
- API 호출과 자동화 과정에서는 Encoding 여부가 성공과 실패를 좌우하기도 한다.
- Decoding을 통해 다시 원래 문자열로 복원할 수 있다.
URL Encoding의 원리를 이해해 두면 API 오류를 빠르게 해결할 수 있고, Make나 n8n 같은 자동화 도구를 사용할 때도 훨씬 안정적으로 워크플로를 구성할 수 있습니다. 처음에는 낯설게 느껴질 수 있지만, 실제 프로젝트에서 몇 번만 적용해 보면 자연스럽게 익숙해지는 기본 개념입니다.