무료 변환기

URL 인코더 / 디코더

브라우저에서 즉시 URL과 URI 구성 요소를 인코딩하고 디코딩합니다. 무료이며 비공개이며 업로드가 필요하지 않습니다.

또는

이 도구에 대하여

URL 인코딩(공식적으로 RFC 3986에 정의된 백분율 인코딩)은 URL에서 특별한 의미를 갖는 문자(공백, 슬래시, 앰퍼샌드, 해시 표시)를 백분율 기호 뒤에 16진수 숫자를 사용하여 안전한 형식으로 변환합니다. 공백 문자는 %20(또는 양식 인코딩 컨텍스트에서는 +)이 되고, 앰퍼샌드는 %26이 됩니다. 이 인코딩이 없으면 특수 문자는 리터럴 데이터가 아닌 URL 구문으로 해석되어 URL이 손상되거나 의도하지 않은 동작이 발생합니다.

서로 관련되어 있지만 서로 다른 두 가지 인코딩이 존재합니다. 표준 URL 구성요소 인코딩은 예약되지 않은 문자 집합(A-Z, a-z, 0-9, 하이픈, 밑줄, 마침표, 물결표) 이외의 모든 항목에 대해 %-이스케이프를 사용합니다. 양식 인코딩 변형(application/x-www-form-urlencoded)은 추가로 공백을 더하기 기호로 처리하고 일부 다른 문자에 대해 다른 규칙을 사용합니다. JavaScript의 encodeURIComponent는 엄격한 구성 요소 인코딩을 사용합니다. encodeURI는 URL 구조 문자를 보존하는 보다 허용적인 형식을 사용합니다.

이 도구는 인코딩과 디코딩을 모두 제공합니다. 인코딩 모드는 이스케이프가 필요한 각 문자를 %HH 형식으로 래핑합니다. 디코드 모드에서는 변환이 반전됩니다. 두 가지 모두 내장된 JavaScript URL 기능을 사용하여 브라우저에서 완전히 실행되므로 데이터가 어디에도 전송되지 않습니다.

URL을 인코딩하거나 디코딩하는 이유

쿼리 문자열 매개변수, 사용자 입력이 포함된 경로 세그먼트, 리디렉션 대상 등 데이터가 URL에 포함될 때마다 적절한 인코딩이 필요합니다. 인코딩에 실패하면 특수 문자가 나타날 때 깨지는 URL이 생성되고, 매개변수 경계가 쿼리 문자열에 유출되거나(&x=1을 별도의 매개변수로 전환) 웹 서버에서 잘못된 형식의 요청으로 차단됩니다.

디코딩은 그 반대입니다. 즉, 인코딩된 URL에서 원본 데이터를 추출하는 것입니다. 브라우저 주소 표시줄에는 URL이 인코딩된 형식으로 표시되는 경우가 많습니다. 디코딩하면 실제로 의도한 것이 무엇인지 알 수 있습니다. 로깅, 디버깅 및 보안 분석은 모두 원래 매개변수와 경로를 표시하는 디코딩된 URL의 이점을 활용합니다.

사용 방법

문자열을 붙여넣고 방향을 선택하세요.

  1. 인코딩 또는 디코딩 선택: 인코딩은 안전하지 않은 문자를 %HH 형식으로 래핑합니다. 디코드하면 %HH가 리터럴 문자로 다시 이스케이프됩니다.
  2. 입력 텍스트 추가: 인코딩하거나 디코딩할 문자열을 붙여넣습니다. 인코딩의 경우 이는 일반적으로 공백, 특수 문자 또는 비ASCII 콘텐츠가 포함된 리터럴 값입니다. 디코딩의 경우 이는 %HH 이스케이프를 포함하는 URL 또는 URL 구성 요소입니다.
  3. 변환: 이 도구는 encodeURIComponent 또는 decodeURIComponent를 적용합니다. 인코딩된 출력은 URL에 포함해도 안전합니다. 디코딩된 출력은 원래 리터럴 값입니다.
  4. 복사 또는 다운로드: 필요할 때마다 결과를 사용하십시오. 인코딩된 값은 URL에 맞습니다. 디코딩된 값은 원본 데이터를 나타냅니다.

일반적인 사용 사례

기술적인 세부사항

encodeURIComponent는 예약되지 않은 세트 [A-Za-z0-9-_.~] 외부의 모든 문자를 인코딩합니다. 공백은 %20, 더하기 기호는 %2B, 등호는 %3D가 됩니다. ASCII 외부 문자는 먼저 UTF-8로 인코딩된 다음 각 바이트가 %-이스케이프됩니다.

encodeURI는 더 허용적이며 구성 요소보다는 전체 URL을 위한 것입니다. /, ?, &, =, # 및 기타 몇 가지 문자는 URL 구문 의미를 갖기 때문에 이스케이프되지 않습니다. URL에 사용자 데이터를 삽입하려면 encodeURIComponent가 거의 항상 올바른 선택입니다.

decodeURIComponent는 %-이스케이프를 반대로 수행하여 각 이스케이프가 올바른 형식인지, 결과 바이트가 유효한 UTF-8을 형성하는지 확인합니다. 잘못된 입력은 쓰레기를 생성하는 대신 오류를 발생시킵니다.

모범 사례

자주 묻는 질문

URL 인코딩이 필요한 문자는 무엇입니까?
예약된 문자(&, =, ?, #, /, :, @)와 안전하지 않은 문자(공백, <, >, {, }, |, ^, ~, [, ], `)는 인코딩되어야 합니다. 영숫자 문자와 -_.~는 안전하며 인코딩이 필요하지 않습니다.
encodeURI와 encodeURIComponent의 차이점은 무엇입니까?
encodeURI는 전체 URL을 인코딩하지만 예약된 문자(://?#)를 유지합니다. encodeURIComponent는 -_.!~*'()를 제외한 모든 것을 인코딩합니다. 쿼리 매개변수 값에 사용합니다. 이 도구는 두 가지 모드를 모두 제공합니다.
URL에서 공백은 어떻게 인코딩되나요?
공백은 %20(표준 백분율 인코딩) 또는 +(양식 인코딩)로 인코딩될 수 있습니다. %20은 URL 경로에 맞는 반면 +는 HTML 양식의 쿼리 문자열에 사용됩니다. 이 도구는 기본적으로 %20을 사용합니다.
유니코드 문자를 인코딩할 수 있나요?
예. 유니코드 문자는 먼저 UTF-8 바이트로 인코딩된 다음 각 바이트가 백분율로 인코딩됩니다. 예를 들어 '日'은 %E6%97%A5(3개의 UTF-8 바이트, 각각 백분율로 인코딩됨)가 됩니다.
encodeURI 또는 encodeURIComponent를 사용해야 합니까?
거의 항상 encodeURIComponent입니다. 완전한 URL이 있고 그 구조를 보존하려는 경우에만 encodeURI를 사용하십시오. 어쨌든 구성 요소에서 URL을 작성하기 때문에 일반적으로 드뭅니다.
내 데이터가 서버에 업로드되나요?
아니요. URL 인코딩 및 디코딩은 전적으로 브라우저에서 이루어집니다.
유니코드 이모티콘을 처리하나요?
예. 이모티콘은 멀티바이트 UTF-8 시퀀스입니다. 인코더는 디코더가 원래 이모티콘으로 올바르게 재조립되는 % 이스케이프된 바이트 체인을 생성합니다.
내 입력에 실제로 인코딩되지 않은 %HH 모양의 문자열이 있으면 어떻게 됩니까?
인코딩은 각 %를 %25로 바꾼 다음 나머지에 대해 이스케이프를 다시 적용합니다. 엄격한 입력을 디코딩하면 잘못된 형식의 이스케이프에 오류가 발생합니다. 모호해 보이는 문자열은 잘못 디코딩될 수 있습니다.