URL 인코더·디코더
검색 주소에 보이는 %EC%95%88%EB%85%95를 "안녕"으로 되돌리거나, 한글·공백·특수문자를 주소에 넣을 수 있게 인코딩합니다. 전체 URL을 넣으면 호스트·경로·매개변수를 표로 나눠 보여 주고,
두 번 인코딩된 값도 반복해서 풉니다. UTF-8로 안 읽히는 옛 한국 사이트 주소는 EUC-KR로 읽습니다. 입력한 내용은 서버로 전송되지 않고 브라우저 안에서만 처리합니다.
글을 붙여 넣으면 결과가 바로 표시됩니다.
다른 가능한 해석
퍼센트 인코딩이란
URL에는 영문·숫자와 일부 기호만 쓸 수 있어서(RFC 3986) 한글·공백·&·= 같은 글자는 UTF-8 바이트마다 %XX로 바꿔 넣습니다. 한글 한 글자는 UTF-8로 3바이트라 안 → %EC%95%88처럼 9글자가 됩니다.
브라우저 주소창은 보기 좋게 한글로 보여 주지만 복사하면 인코딩된 형태가 나오는 경우가 많습니다.
| 글 | 인코딩 | 비고 |
|---|---|---|
| 안녕 | %EC%95%88%EB%85%95 | UTF-8 (현재 표준) |
| 안녕 | %BE%C8%B3%E7 | EUC-KR (옛 사이트). 2바이트라 짧다. 이 도구는 UTF-8로 안 읽히면 EUC-KR로 시도 |
| 공백 | %20 또는 + | +는 폼 전송(x-www-form-urlencoded)·검색어에서만 공백 |
& = ? # / | %26 %3D %3F %23 %2F | 값 안에 들어갈 때만 인코딩(구분자로 쓸 때는 그대로) |
인코딩 세 가지 방식의 차이
- 값 (encodeURIComponent): 매개변수 값 하나를 인코딩할 때.
&=/?까지 모두 바꿉니다. 가장 많이 쓰는 방식입니다. 자바스크립트encodeURIComponent("안녕&")→%EC%95%88%EB%85%95%26. - 전체 URL (encodeURI): 이미 만들어진 주소 전체를 넣을 때.
:/?&=#는 구분자이므로 남기고 한글·공백만 바꿉니다. - 폼 데이터: HTML 폼이 GET/POST로 보내는 형식. 공백을
+로,*'()도 인코딩합니다. 파이썬urllib.parse.quote_plus와 같습니다.
디코딩은 세 방식 모두 자동으로 받습니다. 주소에 +가 있으면 공백으로 바꾼 결과도 함께 보여 줍니다. 같은 값을 두 번 인코딩하면 %25EC처럼 %가 %25로 바뀌는데, 이 도구는 더 풀 수 없을 때까지 반복해서 풀고 횟수를 알려 줍니다.
한글이 깨질 때
디코딩 결과가 ¾È³ç·ì•ˆë…•처럼 나오면 문자 인코딩이 어긋난 것입니다. 서버가 EUC-KR을 기대하는데 UTF-8로 인코딩했거나 그 반대입니다. 이 도구는 두 인코딩을 모두 시도하므로 어느 쪽인지 "문자 인코딩" 줄에서 확인할 수 있습니다.
이미 다른 곳에서 깨진 글은 깨진 한글 복구로 되돌려 보세요. 주소 안에 Base64·JWT가 들어 있으면 문자열 디코더가 이어서 풀어 줍니다.
자주 묻는 질문
주소를 넣었는데 매개변수 표가 안 보여요.
? 뒤에 이름=값&이름=값 형식이 있어야 표가 생깁니다. http(s):// 없이 a=1&b=2만 넣어도 됩니다.
인코딩한 결과가 다른 사이트와 달라요.
방식 차이입니다. 값 인코딩은 /도 바꾸고, 전체 URL 인코딩은 남깁니다. 공백은 %20(값·URL) 또는 +(폼)입니다.
입력한 주소가 서버로 가나요?
아니요. 변환은 브라우저 안에서 끝나고 어디에도 전송·저장되지 않습니다. 세션 ID나 토큰이 들어 있는 주소도 안심하고 넣을 수 있습니다.
출처
- URI 일반 구문·퍼센트 인코딩: RFC 3986
- 폼 데이터 인코딩(application/x-www-form-urlencoded): WHATWG URL Standard
- encodeURIComponent·encodeURI: MDN
이 도구가 도움이 됐다면 알려 주세요
페이지 링크만 보냅니다. 입력한 값이나 파일은 담기지 않습니다.