URL을 인코딩하고 디코딩하는 방법
URL에서 공백이 있어야 할 곳에 %20이 보이거나 악센트 문자가 있어야 할 곳에 %C3%A9가 보인 적이 있다면 URL 인코딩을 만난 것입니다. 이는 웹의 기본 구성 요소이며, 이를 이해하면 깨진 링크, API 문제 및 양식 제출을 디버깅하는 데 도움이 됩니다.
URL 인코딩이 하는 일
URL에는 안전한 문자의 제한된 집합만 포함될 수 있습니다: 글자(A-Z, a-z), 숫자(0-9) 및 일부 특수 문자(-, _, ., ~). 그 외 모든 것 — 공백, 악센트, 이모지, &, =, #, ?와 같은 기호 — 은 안전한 형식으로 변환되어야 합니다.
URL 인코딩(percent-encoding이라고도 함)은 안전하지 않은 문자를 % 뒤에 16진수 바이트 값으로 대체합니다:
| 문자 | 인코딩됨 |
|---|---|
| 공백 | %20 |
| & | %26 |
| = | %3D |
| # | %23 |
| ? | %3F |
| / | %2F |
| @ | %40 |
URL 인코딩이 필요할 때
- 특수 문자가 있는 쿼리 매개변수 —
price > 100 & category = shoes와 같은 쿼리는 URL에서 작동하려면 인코딩이 필요합니다 - URL의 비라틴 문자 — 다른 언어의 이름, 도시 또는 콘텐츠는 인코딩되어야 합니다
- API 요청 — API 호출을 수동으로 구성할 때 매개변수 값에 종종 인코딩이 필요합니다
- 디버깅 — URL이 작동하지 않을 때 디코딩하면 실제 값이 드러납니다
인코딩 및 디코딩하는 방법
- 인코딩 또는 디코딩 선택 — 방향을 선택하세요. 쿼리 매개변수에는 encodeURIComponent를, 전체 URL에는 encodeURI를 사용하세요.
- 입력 붙여넣기 — 텍스트나 URL을 입력하세요. 결과가 즉시 업데이트됩니다.
- 출력 복사 — 결과를 코드, API 요청 또는 브라우저에서 사용하세요.
팁
- 전체 URL이 아닌 값을 인코딩하세요 — 전체 URL을 인코딩하면 URL을 구조화하는 슬래시와 콜론도 인코딩되어 손상됩니다. 쿼리 매개변수 내의 값만 인코딩하세요.
- 이중 인코딩 — 이미 인코딩된 문자열을 인코딩하면
%2520(%가%25가 됨)과 같은 것이 생성됩니다. URL이 잘못 보이면 무언가가 두 번 인코딩되었는지 확인하세요. - 디버깅을 위해 디코딩 — API 요청이 실패하거나 URL이 읽을 수 없어 보일 때 디코딩하여 실제 값을 확인하세요. 종종 즉시 문제가 드러납니다.
- 언어의 내장 함수 사용 — 프로덕션 코드에서는 항상
encodeURIComponent()(JavaScript),urllib.parse.quote()(Python) 또는URLEncoder.encode()(Java)를 사용하고 손으로 인코딩하지 마세요.
자주 묻는 질문
encodeURI와 encodeURIComponent의 차이점은 무엇입니까?
encodeURI는 URL 구조에서 유효한 문자(슬래시, 콜론, 물음표)를 보존합니다. encodeURIComponent는 글자, 숫자 및 일부 안전한 문자를 제외한 모든 것을 인코딩합니다. 쿼리 매개변수 값에는 encodeURIComponent를, 전체 URL에는 encodeURI를 사용하세요.
왜 공백이 %20 또는 +가 됩니까?
URL 인코딩에서 공백은 %20이 됩니다. 양식 데이터(application/x-www-form-urlencoded)에서 공백은 +가 됩니다. 둘 다 컨텍스트에서 유효하지만 %20이 URL의 보편적 표준입니다.
URL을 수동으로 인코딩해야 합니까?
대부분의 경우 언어나 프레임워크가 자동으로 인코딩을 처리합니다. 수동 인코딩은 URL을 손으로 구성하거나, API 요청을 디버깅하거나, 특수 문자가 포함된 쿼리 문자열로 작업할 때 유용합니다.
내 데이터가 서버로 전송됩니까?
아니요. 모든 인코딩 및 디코딩은 브라우저에서 수행됩니다.