한국어

URL 인코딩 디코딩 — 한글 주소·퍼센트 인코딩 변환기

한글·이모지까지 되는 URL 퍼센트 인코더와 디코더

브라우저에서 처리 · 서버로 전송되지 않음

소개

URL에는 알파벳, 숫자, 몇 가지 기호만 그대로 쓸 수 있습니다. 한글이나 공백, 이모지는 UTF-8 바이트로 바꾼 뒤 각 바이트를 % 와 16진수 두 자리로 적어야 하는데, 이를 퍼센트 인코딩이라고 합니다. 이 도구는 입력하는 즉시 인코딩과 디코딩 결과를 보여 줍니다.

사용법

  1. 동작에서 인코딩 또는 디코딩을 고릅니다.
  2. 범위를 고릅니다. 쿼리 값 하나는 encodeURIComponent, 주소 전체는 encodeURI를 선택하세요.
  3. 입력 칸에 텍스트나 주소를 붙여 넣으면 결과가 바로 나타납니다.
  4. 폼 데이터를 디코딩한다면 + 를 공백으로 옵션을 켭니다.
  5. 복사 버튼으로 결과를 가져가거나, 결과를 입력으로 버튼으로 되돌려 확인합니다.

기준

  • 브라우저 표준 함수 encodeURIComponent, encodeURI, decodeURIComponent, decodeURI를 그대로 사용하며, 규칙은 RFC 3986을 따릅니다.
  • 문자는 먼저 UTF-8 바이트가 됩니다. 한글 한 글자는 3바이트라 %XX가 세 번, 이모지는 4바이트라 네 번 나옵니다.
  • 인코딩하지 않는 문자는 A-Z a-z 0-9 - _ . ! ~ * ' ( ) 입니다. encodeURI는 여기에 ; , / ? : @ & = + $ #도 그대로 둡니다.
  • 짝이 맞지 않는 서로게이트 문자는 인코딩할 수 없어 오류로 알려 줍니다.
  • 디코딩 실패 시 임의로 고치지 않고 오류 메시지만 보여 줍니다.

예시

입력 방식 결과
a b&c=d 컴포넌트 a%20b%26c%3Dd
안녕하세요 컴포넌트 %EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94
👍 컴포넌트 %F0%9F%91%8D
https://example.com/검색?q=a b 전체 주소 https://example.com/%EA%B2%80%EC%83%89?q=a%20b

자주 하는 실수

  • 주소 전체에 encodeURIComponent를 쓰면 https://의 :와 /까지 바뀌어 주소가 깨집니다. 전체 주소는 encodeURI를 쓰세요.
  • 이미 인코딩된 문자열을 한 번 더 인코딩하면 %가 %25로 바뀌어 이중 인코딩이 됩니다. 결과가 이상하면 먼저 디코딩해 보세요.
  • 쿼리 값에 &나 =가 들어갈 가능성이 있으면 반드시 값 부분만 컴포넌트 방식으로 인코딩해야 합니다.

자주 묻는 질문

encodeURIComponent와 encodeURI는 무엇이 다른가요?

encodeURIComponent는 쿼리 값 하나처럼 조각을 인코딩할 때 쓰며 / ? & = # 같은 구분 문자까지 모두 바꿉니다. encodeURI는 주소 전체를 인코딩할 때 쓰며 이런 구분 문자는 그대로 둡니다.

디코딩하면 오류가 나요.

% 뒤에 16진수 두 자리가 오지 않았거나, 이어진 바이트가 올바른 UTF-8이 아닐 때 오류가 납니다. 주소를 중간에서 잘라 복사했는지, % 문자가 그냥 글자로 들어 있지 않은지 확인하세요.

공백이 %20으로도 +로도 보이는데 어느 쪽이 맞나요?

주소 경로에서는 %20이 표준입니다. +는 HTML 폼 제출 방식(application/x-www-form-urlencoded)에서만 공백을 뜻해요. 그런 데이터를 디코딩할 때는 + 를 공백으로 옵션을 켜세요.

입력한 주소가 서버로 전송되나요?

아니요. 변환은 모두 브라우저 안에서 이루어집니다.

필요한 도구가 있나요?