URL 인코딩·디코딩
한글 주소나 검색어를 %로 인코딩하고, 인코딩된 주소를 읽을 수 있게 디코딩합니다. 쿼리 파라미터도 표로 풀어 줍니다.
인코딩 범위 비교
| 문자 | 값 하나 | 주소 전체 |
|---|---|---|
| 한글·공백 | %로 바꿈 | %로 바꿈 |
| / ? : @ & = + $ # , | %로 바꿈 | 그대로 둠 |
| A–Z a–z 0–9 - _ . ! ~ * ' ( ) | 그대로 둠 | 그대로 둠 |
예: https://ohleebox.com/검색?q=오리 박스를 주소 전체로 인코딩하면 https://ohleebox.com/%EA%B2%80%EC%83%89?q=%EC%98%A4%EB%A6%AC%20%EB%B0%95%EC%8A%A4가 됩니다.
코드로 하려면
언어별 함수는 아래와 같습니다. 파이썬의 quote는 기본으로 /를 남기니 값 하나를 넣을 때는 safe=""를 주세요.
encodeURIComponent("오리 박스") // %EC%98%A4%EB%A6%AC%20%EB%B0%95%EC%8A%A4
decodeURIComponent("%EC%98%A4%EB%A6%AC")
# 파이썬
from urllib.parse import quote, unquote
quote("오리 박스", safe="")
unquote("%EC%98%A4%EB%A6%AC")다른 개발·데이터 도구
자주 묻는 질문
URL 인코딩은 왜 하나요?
주소에는 영문·숫자와 일부 기호만 쓸 수 있어서 한글이나 공백, &·= 같은 특수문자를 %와 16진수로 바꿔야 합니다. "한글"은 UTF-8 바이트를 따라 %ED%95%9C%EA%B8%80이 됩니다.
encodeURIComponent와 encodeURI는 무엇이 다른가요?
encodeURIComponent는 / ? & = # 까지 모두 바꿔서 검색어 같은 값 하나를 넣을 때 씁니다. encodeURI는 주소의 구조를 이루는 기호는 남기고 한글·공백만 바꿔서 주소 전체를 다룰 때 씁니다.
+와 %20은 무엇이 다른가요?
둘 다 공백입니다. %20은 주소 어디서나 공백이고, +는 폼으로 보낸 쿼리 문자열(application/x-www-form-urlencoded)에서만 공백입니다. 디코딩할 때 + 처리 여부를 선택할 수 있습니다.
주소를 넣으면 파라미터도 보여 주나요?
?가 들어간 주소를 인코딩·디코딩하면 쿼리 파라미터를 이름과 값의 표로 풀어서 보여 줍니다.