tigtools

URL 인코더 / 디코더

URL에 사용할 텍스트를 인코딩하거나 %20 형식의 이스케이프를 읽을 수 있는 텍스트로 변환하세요. 단일 값에는 구성 요소 모드를, 전체 주소에는 전체 URL 모드를 선택하세요.

브라우저에서 실행 가입 불필요

방향
인코딩할 항목

구성 요소(encodeURIComponent)는 문자, 숫자, - _ . ! ~ * ' ( )를 제외한 모든 항목을 이스케이프합니다. 쿼리 값 하나, 폼 필드 또는 경로 세그먼트에 사용하세요.

사용 방법

  1. 인코딩 또는 디코딩을 선택하세요.
  2. 단일 값(예: 쿼리 매개변수 하나)에는 구성이 아닌 구성 요소 모드를, 전체 주소에는 전체 URL 모드를 선택하세요.
  3. 텍스트를 입력하거나 붙여 넣으세요. 결과가 오른쪽에 표시됩니다. 휴대전화에서는 아래에 표시됩니다.
  4. 결과를 복사하거나 “출력을 입력으로 사용”을 눌러 작업을 반대로 수행하고 변환 결과를 확인하세요.

작동 방식

URL에는 제한된 ASCII 문자만 사용할 수 있습니다. 공백, 악센트가 있는 문자, 이모지를 비롯한 나머지 문자는 퍼센트 이스케이프 형식으로 표기합니다. 문자를 UTF-8 바이트로 변환한 다음, 각 바이트를 %와 두 자리 16진수로 나타냅니다. 공백은 %20, é는 %C3%A9, €는 %E2%82%AC가 됩니다.

구성 요소 모드는 JavaScript의 encodeURIComponent와 decodeURIComponent를 사용합니다. / ? # & = + : @를 포함해 URL에서 특별한 의미가 있는 문자를 모두 이스케이프하므로, 결과를 쿼리 값이나 단일 경로 세그먼트 안에 안전하게 넣을 수 있습니다. A–Z, a–z, 0–9 및 - _ . ! ~ * ' ( )만 변환하지 않습니다.

전체 URL 모드는 encodeURI와 decodeURI를 사용합니다. 입력값을 완전한 URL로 간주하고 예약 문자인 ; , / ? : @ & = + $ #는 그대로 둡니다. 따라서 주소가 계속 올바르게 작동합니다. 디코딩할 때도 decodeURI는 이러한 예약 문자의 이스케이프를 그대로 둡니다. %2F는 /로 바꾸면 URL의 의미가 달라지므로 %2F로 유지됩니다.

폼 데이터 옵션은 브라우저가 HTML 양식을 제출할 때 사용하는 형식인 application/x-www-form-urlencoded를 따릅니다. 이 형식에서는 공백을 %20 대신 +로 표기합니다. 이 옵션으로 디코딩하면 모든 +가 공백으로 바뀌므로, 실제 더하기 기호는 %2B로 표기해야 합니다.

잘못된 입력도 버리지 않습니다. % 뒤에 16진수 두 자리가 오지 않거나 이스케이프 시퀀스가 유효한 UTF-8을 이루지 않으면 문제가 있는 위치를 표시하고 텍스트를 그대로 유지해 수정할 수 있습니다.

예시

쿼리 문자열에 값 넣기

https://example.com/search?q=…에서 “Rock & Roll”을 검색하려면 구성 요소 모드에서 값만 인코딩하세요. 결과는 Rock%20%26%20Roll입니다. 인코딩하지 않으면 &가 q 매개변수를 끝내고 “ Roll”이라는 새 매개변수를 시작합니다.

공백과 악센트가 포함된 URL 수정하기

전체 URL 모드에서 https://example.com/menu/crème brûlée.html은 https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html로 바뀝니다. 슬래시와 콜론은 그대로 유지되므로 링크가 계속 작동합니다.

로그에 기록된 폼 데이터 읽기

서버 로그에 name=Jane+Doe&city=S%C3%A3o+Paulo가 표시됩니다. “+를 공백으로 처리”를 켜고 구성 요소 모드에서 디코딩하면 name=Jane Doe&city=São Paulo로 읽을 수 있습니다.

자주 묻는 질문

encodeURI와 encodeURIComponent의 차이는 무엇인가요?

encodeURIComponent는 URL 부분을 구분하는 문자(/ ? # & = + : @ 등)를 이스케이프하므로 URL의 한 부분에 사용합니다. encodeURI는 이러한 문자를 그대로 두므로 전체 URL에 사용합니다. 쿼리 값에 encodeURI를 사용하는 것은 흔한 실수입니다. 값 안의 &나 =가 이스케이프되지 않아 쿼리 문자열이 깨질 수 있습니다.

공백은 %20으로 써야 하나요, +로 써야 하나요?

URL 경로에서 공백은 항상 %20으로 표기합니다. 쿼리 문자열에서는 두 형식이 모두 사용됩니다. %20은 어디서나 유효하지만, +는 폼 인코딩 데이터(application/x-www-form-urlencoded)에서만 공백을 뜻합니다. HTML 양식과 여러 서버 프레임워크는 쿼리 문자열을 이 형식으로 읽습니다. 확실하지 않다면 %20을 사용하세요.

디코딩할 때 오류가 발생하는 이유는 무엇인가요?

% 기호 뒤에 16진수 두 자리가 오지 않거나(예: “50% off”), 이스케이프된 바이트가 유효한 UTF-8이 아니면 디코딩에 실패합니다. 이는 대개 Latin-1과 같은 이전 문자 인코딩으로 텍스트를 인코딩했을 때 발생합니다(é를 %C3%A9 대신 %E9로 표기). 오류 메시지에 문제가 발생한 위치가 표시됩니다.

전체 URL 모드에서 %2F가 슬래시로 바뀌지 않는 이유는 무엇인가요?

decodeURI는 / ? # & =와 같은 예약 문자의 이스케이프를 의도적으로 그대로 둡니다. 이 문자를 디코딩하면 URL이 여러 부분으로 나뉘는 방식이 달라질 수 있기 때문입니다. 모든 이스케이프를 디코딩하려면 구성 요소 모드를 사용하세요.

인코딩되지 않는 문자는 무엇인가요?

두 모드 모두 A–Z, a–z, 0–9 및 - _ . ! ~ * ' ( )는 변환하지 않습니다. 전체 URL 모드에서는 ; , / ? : @ & = + $와 #도 변환하지 않습니다.

개인정보 보호

인코딩과 디코딩은 브라우저에 내장된 JavaScript 함수로 처리됩니다. 텍스트와 URL은 업로드되거나 저장되지 않으며 분석 데이터에도 포함되지 않습니다.