URL
URL 인코더
URL을 퍼센트 인코딩하고 디코딩하세요.
퍼센트 인코딩에 대하여
퍼센트 인코딩(URL 인코딩)은 공백, &, ?, # 와 같은 비 ASCII 문자 등 URL 내에서 안전하지 않은 문자를 %와 16진수 바이트 값으로 대체합니다. 이를 통해 쿼리 문자열과 경로 세그먼트가 URL 자체의 문법을 깨지 않고 임의의 텍스트를 전달할 수 있습니다.
모든 문자가 인코딩을 필요로 하는 것은 아니며, 그대로 두는 문자 집합은 맥락에 따라 달라집니다. RFC 3986은 문자, 숫자, - _ . ~ 를 항상 안전하다고 규정합니다. 그 밖의 "예약" 문자 집합(/ ? # & 등)은 이미 구문상의 역할을 하고 있지 않은 곳에서만 안전합니다. 폼에만 있는 특이한 관례도 있습니다. 브라우저가 HTML 폼을 제출할 때 쓰는 형식인 application/x-www-form-urlencoded는 공백을 %20이 아니라 + 로 인코딩하는데, 이는 이 특정 콘텐츠 타입에 한정된 관례이지 URL 전반의 규칙이 아닙니다.
사용되는 곳
- 공백, 기호, 비라틴 문자를 포함하는 쿼리 문자열 값
- application/x-www-form-urlencoded 로 전송되는 폼 제출
- URL 매개변수로 전달되는 리디렉션 URL이나 토큰의 인코딩
- 파일 경로나 검색어를 링크에 안전하게 포함
자주 묻는 질문
퍼센트 인코딩은 Base64와 같은가요?
아닙니다. 둘은 다른 문제를 해결합니다. 퍼센트 인코딩은 그 외에는 읽을 수 있는 텍스트 안에서 특정 안전하지 않은 문자만 이스케이프하며, Base64는 전체 바이너리 데이터를 고정된 문자 집합으로 다시 인코딩합니다.
일부 문자는 왜 그대로 유지되나요?
문자, 숫자, 그리고 일부 기호(- _ . ~)는 URL에서 항상 안전한 것으로 정의되어 있어 변경되지 않습니다.
이것은 URL 전체를 인코딩하나요, 아니면 일부만 인코딩하나요?
값으로 붙여넣은 텍스트만 인코딩합니다. URL 전체를 인코딩하면 그대로 유지되어야 할 슬래시와 콜론까지 이스케이프되므로, 전체 주소가 아니라 개별 쿼리 값에 적용하세요.
공백이 어떤 때는 + 가 되고 어떤 때는 %20이 되는 이유는 무엇인가요?
둘 다 유효하지만 쓰이는 자리가 다릅니다. URL의 경로나 쿼리 문자열에서는 공백이 %20으로 인코딩되는 것이 맞습니다. + 라는 축약형은 HTML 폼이 제출에 사용하는 application/x-www-form-urlencoded 형식에 국한된 것으로, 그 안에서는 문자 그대로의 + 자체를 모호함을 피하기 위해 %2B로 인코딩해야 합니다. 이 도구는 항상 올바른 %20을 생성합니다. 폼 인코딩된 본문을 직접 만든다면 인코딩된 공백을 + 로 바꾸세요.