DevToolPal
한국어

URL 인코딩·디코딩

텍스트를 퍼센트 인코딩해 URL과 쿼리 문자열에 안전하게 쓰거나, %XX 시퀀스를 읽을 수 있는 텍스트로 디코딩합니다.

로컬에서 실행, 업로드 없음

옵션

모드
인코딩 범위

입력

0자 · 0 B

출력

0자 · 0 B

기능 소개

퍼센트 인코딩이라고도 하는 URL 인코딩은 URL에 쓸 수 없거나 특별한 의미가 있는 문자를 %와 16진수 두 자리로 바꿉니다. 공백은 %20, 앰퍼샌드는 %26이 되고, 中文 같은 비 ASCII 텍스트는 먼저 UTF-8 바이트로 바뀐 뒤 각 바이트가 %XX로 쓰입니다.

이 도구는 텍스트를 인코딩해 쿼리 문자열, 경로 세그먼트, API 요청에 안전하게 넣을 수 있게 해 주고, 로그나 브라우저 주소창, HTTP 트레이스에서 복사한 퍼센트 인코딩 문자열을 읽을 수 있는 텍스트로 디코딩합니다.

사용 방법

  1. 입력 상자에 텍스트나 URL을 붙여 넣거나 예시를 클릭합니다.
  2. 인코딩 또는 디코딩을 고릅니다.
  3. 인코딩할 때 검색어 같은 값 하나를 인코딩하려면 컴포넌트를, :, /, ?, &, =를 그대로 두려면 전체 URL을 고릅니다.
  4. HTML 폼 데이터에는 공백을 +로 옵션을, 값 목록을 한 번에 처리하려면 줄마다 따로 옵션을 켭니다.
  5. 결과를 복사하거나 다운로드합니다. 디코딩에 실패하면 오류가 깨진 이스케이프 시퀀스의 위치를 알려 줍니다.

예시

검색어 hello world & more를 컴포넌트로 인코딩하면 다음과 같습니다.

hello%20world%20%26%20more

q=%E4%BD%A0%E5%A5%BD를 디코딩하면 q=你好가 됩니다.

언제 무엇을 쓸까

  • 쿼리 문자열을 직접 만들 때: 각 값을 컴포넌트로 인코딩한 뒤 &와 =로 연결합니다.
  • 공백이나 한자가 들어간 전체 링크를 정리할 때: 링크 구조가 유지되도록 전체 URL을 씁니다.
  • 서버 로그를 읽을 때: 많은 서버가 폼 데이터를 그 형식으로 기록하므로 공백을 +로를 켜고 디코딩합니다.

자주 묻는 질문

› "컴포넌트"와 "전체 URL"은 어떻게 다른가요?

컴포넌트는 / ? & = #를 포함한 모든 예약 문자를 인코딩하므로, 결과를 쿼리 매개변수 하나나 경로 세그먼트 하나 안에 안전하게 넣을 수 있습니다. JavaScript의 encodeURIComponent와 같습니다. 전체 URL은 이 문자들을 남겨 두어 주소가 링크로 계속 작동하게 하며, encodeURI와 같습니다.

› 공백은 %20과 + 중 무엇이 되어야 하나요?

경로와 대부분의 API에는 %20을 쓰세요. +는 HTML 폼 데이터(application/x-www-form-urlencoded), 즉 폼을 제출할 때 브라우저가 보내는 형식에만 씁니다. 이 경우 "공백을 +로"를 켜세요.

› 디코딩할 때 "not valid UTF-8"이 나오는 이유는 무엇인가요?

%XX 바이트가 완전한 UTF-8 문자를 이루지 못하기 때문입니다. 보통 멀티바이트 문자 중간에서 텍스트가 잘렸거나, GBK나 Latin-1 같은 레거시 문자 집합으로 인코딩되었기 때문입니다.

› 데이터가 서버로 전송되나요?

아니요. 인코딩과 디코딩은 전적으로 브라우저에서 실행됩니다.