URL 인코딩·디코딩
한글이나 기호가 든 문자열을 URL 인코딩(퍼센트 인코딩)하거나 원래 문자열로 되돌립니다. 파라미터 값용과 URL 전체용을 고를 수 있습니다.
쿼리 값이나 경로의 일부에 씁니다. / ? & = # 도 변환합니다. 예: 서울&부산 → %EC%84%9C%EC%9A%B8%26%EB%B6%80%EC%82%B0
HTML 폼 전송 형식(application/x-www-form-urlencoded)에 맞춰 인코딩할 때 공백을 + 로 바꾸고, 디코딩할 때 + 를 공백으로 되돌립니다. "파라미터 값·일부"에서만 쓸 수 있습니다.
자주 쓰는 문자의 인코딩 목록
| 문자 | encodeURIComponent | encodeURI |
|---|---|---|
| 공백 | %20 | %20 |
! | 변환 안 함 | 변환 안 함 |
" | %22 | %22 |
# | %23 | 변환 안 함 |
$ | %24 | 변환 안 함 |
% | %25 | %25 |
& | %26 | 변환 안 함 |
' | 변환 안 함 | 변환 안 함 |
( | 변환 안 함 | 변환 안 함 |
) | 변환 안 함 | 변환 안 함 |
* | 변환 안 함 | 변환 안 함 |
+ | %2B | 변환 안 함 |
, | %2C | 변환 안 함 |
/ | %2F | 변환 안 함 |
: | %3A | 변환 안 함 |
; | %3B | 변환 안 함 |
= | %3D | 변환 안 함 |
? | %3F | 변환 안 함 |
@ | %40 | 변환 안 함 |
[ | %5B | %5B |
] | %5D | %5D |
~ | 변환 안 함 | 변환 안 함 |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
사용 방법
- 대상을 고릅니다. 쿼리 값 같은 일부분이면 "파라미터 값·일부", URL을 통째로 변환하려면 "URL 전체"입니다.
- HTML 폼 형식(공백을 + 로 표시)이 필요하면 "폼 형식"을 켭니다.
- 문자열을 입력하고 "인코딩" 또는 "디코딩"을 누릅니다.
- 결과를 "복사"합니다. "결과를 입력으로"를 누르면 결과를 입력란으로 옮겨 이어서 변환할 수 있습니다.
- 아래의 "자주 쓰는 문자의 인코딩 목록"에서 기호별 변환 결과를 두 방식으로 비교할 수 있습니다.
주의 사항
- 입력은 2MB까지입니다.
- 문자는 UTF-8로 인코딩·디코딩합니다. EUC-KR로 인코딩된 문자열(예: %BC%AD)은 디코딩할 수 없으며 오류로 표시됩니다.
- "URL 전체" 디코딩에서는 %2F(/), %3F(?), %23(#), %26(&) 등 구분에 쓰이는 기호가 인코딩된 채로 남습니다. URL 구조가 바뀌지 않도록 하기 위해서입니다.
- URL에 접속하거나 링크로 표시하지 않습니다.
계산·변환 방식
"파라미터 값·일부"는 JavaScript의 encodeURIComponent / decodeURIComponent와 같은 규칙입니다. 영문자, 숫자, - _ . ! ~ * ' ( ) 외에는 모두 변환합니다.
"URL 전체"는 encodeURI / decodeURI와 같은 규칙으로, : / ? # [ ] @ & = + $ , ; 같은 URL 구분 기호는 변환하지 않습니다.
폼 형식은 URLSearchParams와 같은 결과가 나오도록 공백을 + 로 바꾸고 ! ' ( ) ~ 도 변환합니다. 디코딩할 때는 + 를 공백으로 처리합니다.
디코딩 전에 % 뒤에 16진수 두 자리가 있는지, 바이트가 올바른 UTF-8인지 확인하고, 문제가 있으면 몇 번째 문자인지 알려 줍니다.
자주 묻는 질문
"파라미터 값·일부"와 "URL 전체"는 어떻게 구분해서 쓰나요?
검색어처럼 쿼리 값 하나를 만들 때는 "파라미터 값·일부"를 씁니다. & 와 = 도 변환되므로 값에 기호가 있어도 URL이 깨지지 않습니다. URL을 구조 그대로 안전한 형태로 만들 때는 "URL 전체"를 씁니다.
공백은 %20과 + 중 어느 것이 되나요?
보통은 %20입니다. "폼 형식"을 켜면 + 가 됩니다. 디코딩할 때도 폼 형식을 켰을 때만 + 를 공백으로 되돌립니다.
이미 인코딩된 문자열을 다시 인코딩하면 어떻게 되나요?
% 가 %25 로 바뀌어 이중으로 인코딩됩니다. 입력에 %XX가 있으면 주의 문구를 표시합니다.
입력한 문자열이 전송되나요?
아니요. 변환은 브라우저 안에서 이루어지며 입력한 URL에 접속하지도 않습니다.
관련 도구
최종 업데이트: