URL 인코딩/디코딩
URL을 인코딩하거나 디코딩합니다.
인코딩 방식 안내
- encodeURIComponent: 쿼리 파라미터 값에 사용 (권장)
- encodeURI: 전체 URL에 사용 (/, ?, # 등 유지)
- 전체 인코딩: 모든 특수문자를 인코딩
URL 인코딩이란?
URL 인코딩(퍼센트 인코딩)은 URL에서 사용할 수 없는 문자를 안전하게 전송하기 위해 %XX 형태의 16진수 코드로 변환하는 방식입니다. URL은 ASCII 문자의 제한된 집합만 허용하기 때문에, 공백, 한글, 특수문자 등은 인코딩이 필요합니다. 예를 들어 공백은 %20, 앰퍼샌드(&)는 %26, 한글 '가'는 %EA%B0%80으로 변환됩니다. 쿼리 파라미터에 데이터를 전달하거나, 폼을 제출하거나, REST API를 호출할 때 URL 인코딩은 웹 개발의 필수 기술입니다.
무엇을 할 수 있나요?
- 인코딩/디코딩 양방향 변환
- 세 가지 인코딩 모드: Component(파라미터용), URI(전체 URL용), 전체(모든 문자)
- 실시간 자동 변환(Live 모드)
- 입력/출력 스왑으로 빠른 역변환
- 한 번의 클릭으로 결과 복사
- 인코딩 테이블로 주요 문자의 변환 결과 즉시 확인
- 모든 처리가 브라우저에서 이루어져 데이터 보안 보장
사용 가이드
- 상단에서 '인코딩' 또는 '디코딩' 모드를 선택합니다.
- 인코딩 방식을 선택합니다: Component(쿼리 파라미터 값), URI(전체 URL), 전체(모든 특수문자).
- 왼쪽 입력창에 URL이나 텍스트를 입력합니다.
- Live 모드가 켜져 있으면 자동으로 결과가 표시되고, 꺼져 있으면 변환 버튼을 클릭합니다.
- '복사' 버튼으로 결과를 클립보드에 복사하거나, 스왑 버튼으로 입출력을 교체할 수 있습니다.
추천 활용법
- 검색 API에 한글이나 특수문자가 포함된 쿼리를 전달할 때
- SNS 공유 링크에 제목이나 설명을 쿼리 파라미터로 포함할 때
- 리다이렉트 URL을 파라미터로 전달할 때 (URL 안의 URL)
- HTML 폼의 GET 방식 전송 데이터를 확인하거나 디버깅할 때
- 웹 크롤러나 스크래퍼에서 인코딩된 URL을 원본으로 복원할 때
- OAuth 콜백 URL이나 쿠키 값에 포함된 인코딩 데이터를 해석할 때
참고사항
- 쿼리 파라미터 값에는 Component 모드를 사용하세요. URI 모드는 &, =, ? 같은 구분 문자를 유지하므로 파라미터 값이 깨질 수 있습니다.
- 이중 인코딩에 주의하세요. 이미 인코딩된 URL을 다시 인코딩하면 %가 %25로 변환되어 복원이 어려워집니다.
- 공백은 인코딩 방식에 따라 %20 또는 +로 표현됩니다. application/x-www-form-urlencoded에서는 +를, URL 경로에서는 %20을 사용합니다.
- 브라우저 주소창에 보이는 한글 URL은 내부적으로 인코딩된 상태입니다. 복사하면 인코딩된 형태로 붙여넣어집니다.
- UTF-8이 표준이지만, 일부 레거시 시스템은 EUC-KR 등 다른 인코딩을 사용합니다. 인코딩 불일치 시 글자가 깨질 수 있습니다.
Q&A
Q: encodeURIComponent와 encodeURI의 차이점은 무엇인가요?
encodeURIComponent는 /, ?, #, &, = 등 모든 특수문자를 인코딩하므로 쿼리 파라미터 값을 전달할 때 사용합니다. encodeURI는 이런 URL 구조 문자를 유지하므로 전체 URL을 인코딩할 때 적합합니다. 파라미터 값에 encodeURI를 사용하면 &나 =가 인코딩되지 않아 URL 구조가 깨질 수 있습니다.
Q: URL 인코딩이 왜 필요한가요?
URL 표준(RFC 3986)은 ASCII 문자의 제한된 집합만 허용합니다. &는 파라미터 구분자, =는 키-값 구분자, ?는 쿼리 시작 등 특별한 의미를 가진 문자가 있습니다. 데이터에 이런 문자가 포함되면 URL 파서가 잘못 해석하므로, 인코딩으로 데이터와 구조를 구분해야 합니다.
Q: %20과 +는 둘 다 공백인가요?
네, 둘 다 공백을 나타내지만 사용 맥락이 다릅니다. %20은 URL 경로와 쿼리 모두에서 사용되는 표준 형식이고, +는 HTML 폼의 application/x-www-form-urlencoded에서만 공백을 나타냅니다. 대부분의 서버는 둘 다 인식하지만, REST API에서는 %20을 사용하는 것이 안전합니다.
Q: 이중 인코딩이란 무엇이고 어떻게 방지하나요?
이미 인코딩된 문자열을 다시 인코딩하면 %가 %25로 변환되어 %20이 %2520이 됩니다. 디코딩해도 원본이 아닌 %20이 나옵니다. 방지하려면 인코딩 전에 입력이 이미 인코딩되었는지 확인하고, 인코딩은 최종 URL 조합 단계에서 한 번만 적용하세요.
Q: 한글은 왜 인코딩하면 그렇게 길어지나요?
한글은 UTF-8에서 한 글자당 3바이트를 차지합니다. 각 바이트가 %XX로 표현되므로 한 글자가 %EA%B0%80처럼 9자로 변환됩니다. 이는 UTF-8 인코딩의 특성으로, 중국어나 일본어도 비슷한 길이로 변환됩니다.
Q: URL에 이모지를 사용할 수 있나요?
이모지도 URL 인코딩을 통해 사용할 수 있습니다. 이모지는 UTF-8에서 4바이트를 차지하므로 %F0%9F%98%80처럼 12자로 인코딩됩니다. 일부 브라우저는 주소창에 이모지를 그대로 표시하지만, 실제 HTTP 요청에서는 인코딩된 형태로 전송됩니다.
Q: 전체 인코딩 모드는 언제 사용하나요?
전체 인코딩은 알파벳, 숫자, 일부 안전 문자(-, _, ., ~)를 제외한 모든 문자를 인코딩합니다. Base64 문자열이나 바이너리 데이터를 URL에 포함할 때, 또는 어떤 문자가 예약 문자인지 확신이 없을 때 가장 안전한 선택입니다.
Q: 브라우저 주소창의 한글 URL은 인코딩된 건가요?
브라우저는 편의를 위해 주소창에 디코딩된 한글을 표시하지만, 실제 HTTP 요청은 인코딩된 형태로 전송됩니다. 주소창에서 URL을 복사하면 브라우저에 따라 인코딩된 형태 또는 원본 한글이 복사될 수 있습니다. 이 도구로 실제 인코딩 결과를 확인하면 확실합니다.
Q: 이 도구에서 처리할 수 있는 텍스트 길이에 제한이 있나요?
특별한 길이 제한은 없지만, 매우 긴 URL은 서버나 브라우저의 URL 길이 제한(보통 2,048~8,192자)에 걸릴 수 있습니다. 대용량 데이터는 URL 파라미터 대신 POST 요청의 본문으로 전달하는 것이 좋습니다.
Q: 이 도구는 무료인가요?
네, 완전히 무료이며 사용 횟수 제한이 없습니다. 모든 변환은 브라우저에서 처리되므로 입력한 데이터가 서버로 전송되지 않습니다.