URL 인코더 및 파서
기기에서 실행되며 아무것도 전송되지 않습니다.모든 작업은 사용자의 기기에서 이루어집니다. 입력하거나 붙여넣은 내용은 어디로도 전송되지 않습니다.
결과가 여기에 표시됩니다
URL과 쿼리 문자열을 인코딩·디코딩하거나, URL을 구성 요소로 나눠 쿼리를 실시간으로 편집하세요. 모두 브라우저에서.
URL은 제한된 ASCII 문자 집합만 안전하게 포함할 수 있습니다 - 공백, & 기호, 비라틴 문자 등 그 외의 모든 것은 URL 안에서 이동하려면 먼저 %XX 형태의 퍼센트 인코딩을 거쳐야 합니다. 이 도구는 브라우저가 사용하는 것과 동일한 규칙으로 텍스트를 인코딩·디코딩하며, 별도로 전체 URL을 프로토콜, 호스트, 포트, 경로, 쿼리 문자열, 해시로 분석하여 표에서 쿼리 매개변수를 편집하고 URL이 실시간으로 재구성되는 것을 볼 수 있게 해 줍니다. 모든 작업은 브라우저에서 로컬로 실행되며 어디에도 업로드되지 않습니다.
자주 묻는 질문
퍼센트 인코딩이란 무엇인가요?
퍼센트 인코딩(URL 인코딩이라고도 함)은 문자를 %와 두 자리 16진수 값으로 대체하며, 이는 해당 문자의 UTF-8 표현의 각 바이트마다 반복됩니다. 이런 방식 덕분에 URL은 공백(%20), & 기호(%26), 이모지 등을 URL 자체의 구문과 혼동되지 않게 전달할 수 있습니다.
encodeURIComponent와 encodeURI의 차이는 무엇인가요?
encodeURIComponent는 소수의 비예약 문자를 제외한 모든 문자를 이스케이프하므로, 쿼리 매개변수나 경로 세그먼트 같은 단일 값에 적합합니다. 그렇지 않으면 URL 구조로 해석될 & 및 = 같은 문자도 이스케이프하기 때문입니다. encodeURI는 URL 전체를 위한 것으로, URL이 계속 작동하도록 :, /, ?, &, # 같은 구조 문자는 그대로 두고, 공백처럼 URL이 실제로 포함할 수 없는 문자만 이스케이프합니다. URL 전체를 encodeURIComponent에 통과시키면 슬래시와 콜론까지 이스케이프되어 URL이 깨집니다.
escape()와 unescape()를 여전히 사용해야 하나요?
아닙니다. 두 함수 모두 encodeURIComponent를 도입한 최초의 JavaScript 표준판에서부터 이미 사용 중단(deprecated)되었습니다. escape()는 HTTP와 최신 URL이 기대하는 방식으로 비 ASCII 문자를 인코딩하지 않고, Latin-1 범위를 벗어나는 모든 문자에 decodeURIComponent가 다시 읽을 수 없는 비표준 %uXXXX 형식을 사용하기 때문입니다. 이 도구는 레거시 시스템이 생성한 결과를 확인할 수 있도록 이 옵션을 남겨 둘 뿐입니다.
쿼리 문자열의 +가 공백으로 바뀌는 이유는 무엇인가요?
쿼리 문자열은 역사적으로 application/x-www-form-urlencoded 형식을 사용하는 HTML 폼 제출에서 비롯되었습니다. 이 형식은 실제 공백을 %20이 아닌 +로 인코딩하며, 이 도구의 파서(그리고 자바스크립트의 URLSearchParams)는 디코딩 시 둘 다 공백으로 처리합니다. 값에 실제로 리터럴 더하기 기호가 필요하다면, 그 자체를 %2B로 퍼센트 인코딩해야 합니다.
?tag=a&tag=b처럼 매개변수가 반복되면 어떻게 되나요?
아무것도 손실되지 않습니다 - 이 도구는 각 항목을 순서대로 쿼리 매개변수 표의 개별 행으로 보존하며, 이는 대부분의 서버 프레임워크가 반복된 키를 목록으로 수집하는 방식과 동일합니다. 한 행을 편집하거나 삭제해도 다른 행에는 영향을 주지 않습니다.
파서가 제 URL에 대해 왜 https://를 가정했나요?
example.com/path 같은 문자열에는 프로토콜이 없기 때문에 브라우저도 이 도구도 그것이 웹 주소인지, 다른 프로토콜을 위한 것인지, 아니면 단순한 텍스트인지 알 수 없습니다. 이를 거부하는 대신 파서는 https://를 가정하여 계속 확인하고 편집할 수 있게 합니다 - 이런 일이 발생할 때마다 힌트가 표시되며, 다른 스킴을 의도했다면 프로토콜 필드에서 수정할 수 있습니다.