쿼리 파라미터 값 만들기
검색어나 리다이렉트 주소처럼 & = ? 가 들어갈 수 있는 값을 URL 에 안전하게 붙일 형태로 바꿉니다.
URL ENCODER · PERCENT ENCODING
주소창의 %ED%95%9C 은 무슨 글자?
'한글 검색' 을 넣고 Encode 를 누르면 %ED%95%9C%EA%B8%80%20%EA%B2%80%EC%83%89 으로, 반대로 Decode 를 누르면 원래 글자로 돌아옵니다. 쿼리 파라미터 값을 만들거나 로그에 찍힌 인코딩된 주소를 읽을 때 씁니다.
The URL Decoder/Encoder is licensed under a Creative Commons Attribution-ShareAlike 2.0 License.
MADE FOR YOUR WORK
검색어나 리다이렉트 주소처럼 & = ? 가 들어갈 수 있는 값을 URL 에 안전하게 붙일 형태로 바꿉니다.
접근 로그나 에러 메시지에 %EC%84%9C 처럼 찍힌 한글 경로·검색어를 사람이 읽는 글자로 되돌립니다.
GET 요청의 파라미터가 서버에서 깨질 때 인코딩이 한 번 됐는지, 두 번 됐는지 직접 풀어 봅니다.
메신저로 받은 긴 인코딩 주소를 디코딩해 실제로 어떤 페이지·검색어로 가는 링크인지 확인합니다.
STEP BY STEP
이렇게 쓰세요
URL 문자열 칸에 인코딩할 값이나 디코딩할 %XX 문자열을 넣습니다.
Encode 는 글자를 %XX 로, Decode 는 %XX 를 글자로 바꿉니다. 결과는 같은 칸에 덮어써집니다.
Decode 결과에 또 %XX 가 보이면 이중 인코딩된 값입니다. 한 번 더 Decode 하면 원문이 나옵니다.
칸의 내용을 선택해 복사합니다. 쿼리 값 하나 단위로 인코딩했는지 다시 확인하세요.
UNDERSTAND THE BASICS
URL 에는 영문자, 숫자와 몇몇 기호만 그대로 쓸 수 있습니다. 나머지 글자는 UTF-8 바이트로 바꾼 뒤 각 바이트를 % 와 16진수 두 자리로 적습니다. 한글 '한' 은 UTF-8 로 3바이트라 %ED%95%9C 세 덩어리가 되고, 공백은 %20 이 됩니다.
/ ? & = # 같은 글자는 URL 의 구조를 나누는 구분자입니다. 값 안에 이 글자가 있으면 구분자로 오해받으므로 반드시 인코딩해야 합니다. 이 도구가 쓰는 encodeURIComponent 규칙은 이런 구분자까지 모두 인코딩하므로, 주소 전체가 아니라 '파라미터 값 하나'에 쓰는 것이 맞습니다.
예전 한국어 사이트는 EUC-KR 로 인코딩해 '한글' 을 %C7%D1%B1%DB 처럼 2바이트씩 적기도 했습니다. 이 도구는 UTF-8 만 다루므로 EUC-KR 로 인코딩된 문자열은 디코딩되지 않습니다. 또 HTML 폼 전송 방식은 공백을 + 로 보내므로, 이 도구는 Decode 할 때 + 를 공백으로 바꿉니다.
| 원래 글자 | 인코딩 결과 | 비고 |
|---|---|---|
| 공백 | %20 | 폼 전송에서는 + 로 보내기도 함 |
| & | %26 | 파라미터 구분자 |
| = | %3D | 키와 값 구분자 |
| ? | %3F | 쿼리 시작 |
| / | %2F | 경로 구분자 |
| # | %23 | 프래그먼트 시작 |
| + | %2B | 그대로 두면 공백으로 읽힐 수 있음 |
| % | %25 | 이미 인코딩된 값을 다시 넣으면 %25 가 생김 |
| ' 와 " | %27, %22 | 이 도구가 추가로 인코딩 |
| 한 | %ED%95%9C | UTF-8 3바이트 |
| - _ . ! ~ * ( ) | 그대로 | 인코딩하지 않는 기호 |
URL에 그대로 넣을 수 없는 한글·공백·특수문자를 percent-encoding(%XX)으로 바꾸고 되돌립니다. 브라우저에서만 처리하며 입력값을 서버로 보내지 않습니다.
문자열을 입력하고 URL 인코딩 또는 디코딩을 선택하세요. 이미 인코딩된 문자열을 다시 변환하면 이중 인코딩될 수 있으니 결과를 확인하세요.
QUICK EXAMPLE
hello world
hello%20world
URL 전체와 쿼리 값은 인코딩할 범위가 다릅니다. 값 하나를 넣고 Encode 또는 Decode 버튼을 누르세요.
인코딩은 encodeURIComponent 를 씁니다. 이 함수는 URL 의 구분자(/ ? & = 등)까지 전부 바꾸므로, 쿼리 파라미터 값 하나를 감쌀 때 쓰는 함수입니다. 주소 전체를 넣으면 구조까지 인코딩되니 값 단위로 넣으세요.
여기에 작은따옴표와 큰따옴표를 %27·%22 로 한 번 더 바꿉니다. 표준은 이 둘을 그대로 두지만, 인코딩한 값을 HTML 속성이나 SQL 문자열에 넣는 자리에서 문제가 되는 경우가 많습니다.
디코딩할 때는 + 를 공백으로 먼저 바꿉니다. 옛 폼 전송 방식(application/x-www-form-urlencoded)이 공백을 + 로 보내기 때문인데, decodeURIComponent 만으로는 그 + 가 그대로 남습니다.
BEFORE YOU FINISH
https://devin.kr/a?q=1 을 통째로 넣으면 https%3A%2F%2F… 가 되어 더는 주소로 동작하지 않습니다. 인코딩은 ? 뒤의 값 하나하나에만 하세요.
이미 %XX 가 든 값을 다시 Encode 하면 % 가 %25 로 바뀌어 %25ED%2595… 가 됩니다. 서버에서 한글이 %ED… 로 보인다면 이중 인코딩을 의심하세요.
100% 처럼 뒤에 16진수가 없는 % 나 EUC-KR 로 인코딩된 값은 UTF-8 로 풀 수 없습니다. 이 도구는 오류 안내를 띄우고 입력을 그대로 보존합니다. 짝이 안 맞는 % 가 있는지 확인하세요.
URL 문자열 칸에 한글을 넣고 Encode 를 누르세요. UTF-8 기준으로 한 글자가 %XX 세 덩어리로 바뀝니다.
둘 다 공백을 뜻할 수 있습니다. %20 은 URL 어디서나 공백이고, + 는 폼 전송 형식의 쿼리에서만 공백으로 읽힙니다. 이 도구는 Encode 할 때 %20 을 쓰고 Decode 할 때 + 도 공백으로 바꿉니다.
EUC-KR 로 인코딩된 값이라 UTF-8 기준인 이 도구로는 풀리지 않습니다. 오래된 한국어 사이트의 주소에서 자주 보이며, EUC-KR 을 지원하는 도구로 디코딩해야 합니다.
encodeURI 는 주소 전체용이라 / ? & = # 같은 구분자를 남기고, encodeURIComponent 는 값 하나용이라 구분자까지 인코딩합니다. 이 도구는 encodeURIComponent 규칙을 따릅니다.
됩니다. 표준 encodeURIComponent 는 ' 를 그대로 두지만, 이 도구는 HTML 속성이나 SQL 에 넣을 때 문제를 줄이려고 ' 는 %27, " 는 %22 로 바꿉니다.
이 도구의 입력 데이터는 브라우저에서 처리하며 도구 기능을 위해 서버로 업로드하지 않습니다. 결과를 공유하기 전 민감한 정보가 없는지 확인하세요.