BTSPACE WAGLEEN English

텍스트·개발

인코더·디코더 (URL·Base64·유니코드)

깨진 한글 주소(%EC%95%88…)도 읽을 수 있게 바로 풀어 줘요

붙여 넣으면 어떤 인코딩인지 알아서 풀어 줘요. 깨진 한글 주소도 읽을 수 있게 바꿔요.

도구 사용하기사용 방법 보기

파일 → Base64 / 데이터 URI

모든 변환은 이 브라우저 안에서만 이루어지고 입력한 글과 파일은 서버로 전송되거나 저장되지 않아요. 인코딩은 암호화가 아니에요.

인코더·디코더 사용법

  1. 방식을 모르겠다면 "자동 감지"를 그대로 두고 변환할 글을 위 칸에 붙여 넣으세요. URL(%xx), 유니코드 이스케이프(\uXXXX), HTML 엔티티(< 등), Base64 중 어떤 형태인지 찾아서 바로 풀어 줘요.
  2. 직접 고르고 싶다면 방식(URL, Base64, HTML 엔티티, 유니코드 이스케이프)과 방향(인코딩, 디코딩)을 정하세요. 입력하는 즉시 아래 칸에 결과가 나오고 글자 수와 바이트 수도 함께 보여 줘요.
  3. URL 인코딩은 값 한 조각과 주소 전체 중에서, Base64 인코딩은 URL 안전 문자와 끝의 = 생략 여부를, HTML과 유니코드는 영문·한글을 어디까지 바꿀지 옵션으로 고를 수 있어요.
  4. 결과 복사 버튼으로 가져가거나, 결과를 입력칸으로 보내 한 번 더 변환해 보세요. 아래쪽 파일 칸에서는 3MB 이하 파일을 Base64나 데이터 URI로 바꿔서 복사할 수 있어요.

깨진 한글 주소가 풀리는 원리

주소에 한글을 넣으면 글자의 UTF-8 바이트를 %와 16진수 두 자리로 적는 퍼센트 인코딩으로 바뀌어요. 예를 들어 '안'은 UTF-8로 EC 95 88 세 바이트라서 %EC%95%88이 돼요. 대부분의 사이트는 UTF-8을 쓰지만 오래된 한국 사이트에는 EUC-KR(CP949) 방식으로 인코딩한 주소가 남아 있어서, '한글'이 %C7%D1%B1%DB처럼 적혀 있어요. 같은 %xx 모양이어도 UTF-8로 풀면 깨진 글자가 나와요.

이 도구는 연속된 %xx 묶음마다 먼저 UTF-8로 풀어 보고, 유효하지 않으면 EUC-KR로 풀어요. 그래서 한 주소 안에 두 방식이 섞여 있어도 각각 처리되고, 어느 쪽으로도 풀리지 않는 조각은 그대로 남겨 두면서 몇 곳이 남았는지 알려 줘요. %2525처럼 두 번 인코딩된 주소는 옵션을 켜 두면 최대 3번까지 반복해서 풀어요. 모든 처리는 브라우저 안에서만 이루어져요.

방식별 개념 정리

URL 인코딩은 주소에서 의미가 있는 문자(? & = # / 등)와 한글처럼 안전하지 않은 문자를 %xx로 바꾸는 방식이에요. 자바스크립트의 encodeURI는 주소 전체를 다루며 주소 구조 문자는 그대로 두고, encodeURIComponent는 값 한 조각을 다루며 구조 문자까지 모두 바꿔요. 검색어를 쿼리에 넣을 때 encodeURI를 쓰면 &나 = 가 그대로 남아 값이 잘릴 수 있어서 값 한 조각 방식이 맞아요. 쿼리 문자열에서는 공백을 + 로 쓰기도 해서 디코딩할 때 "+를 공백으로" 옵션을 쓸 수 있어요.

Base64는 3바이트를 4개의 글자(영문 대소문자, 숫자, +, /)로 옮기는 방식이라 원본보다 약 33% 커져요. 길이가 3의 배수가 아니면 끝에 =를 붙여 맞추고, URL 안전 방식은 +와 / 대신 - 와 _ 를 써서 주소나 파일 이름에 넣기 편해요. 이메일 첨부, 데이터 URI(data:image/png;base64,…), JWT 토큰의 앞 두 부분에 쓰이지만 암호화가 아니라서 누구나 되돌릴 수 있어요.

HTML 엔티티는 &lt;(<), &gt;(>), &amp;(&), &quot;(") 처럼 HTML에서 특별한 뜻이 있는 문자를 글자 그대로 보여 주기 위한 표기예요. 숫자 형식인 글 나 글 처럼 유니코드 번호로도 쓸 수 있어요. 이 도구의 디코딩은 자주 쓰는 이름 엔티티와 모든 숫자 엔티티를 풀고, 목록에 없는 이름은 그대로 남겨 둬요.

유니코드 이스케이프는 글자를 \uAC00처럼 코드 번호로 적는 방식으로 자바스크립트나 JSON 문자열에서 많이 보여요. 이모지처럼 번호가 큰 글자는 \uD83D\uDE00처럼 두 개로 쪼갠 서러게이트 쌍으로 적거나 \u{1F600}처럼 중괄호를 써요. 디코딩은 \uXXXX, \u{…}, \xXX, U+XXXX 형식을 모두 읽어요.

잘 쓰는 요령

  • 인코딩은 암호화가 아니에요. 비밀번호나 인증 토큰을 변환해도 누구나 되돌릴 수 있으니, 공개된 곳에 붙여 넣지 마세요.
  • 검색어처럼 값만 인코딩할 때는 "값 한 조각", 완성된 주소를 통째로 다룰 때는 "주소 전체"를 고르세요.
  • 풀린 결과가 여전히 이상하다면 원본이 글자가 아닌 바이너리이거나 다른 문자 집합일 수 있어요. Base64 결과가 글자가 아니면 16진수로 보여 주고 파일로 저장할 수 있어요.
  • 링크나 로그를 다른 사람에게 보내기 전에 풀어 보면 개인 정보(이름, 전화번호, 인증 값)가 주소 안에 들어 있는지 확인할 수 있어요.
  • 자동 감지가 엉뚱하게 고르면 방식을 직접 선택하세요. 짧은 영문 단어가 우연히 Base64처럼 보일 수도 있어요.

자주 묻는 질문

주소의 한글이 %EC%95%88 처럼 보이는 이유는 뭔가요?

주소에는 영문자·숫자와 일부 기호만 안전하게 쓸 수 있어서, 한글은 UTF-8 바이트를 %와 16진수 두 자리로 적는 퍼센트 인코딩으로 바뀌어요. 예를 들어 '안'은 UTF-8로 EC 95 88 세 바이트라 %EC%95%88이 돼요. 브라우저 주소창은 보통 이를 다시 한글로 보여 주지만 복사하면 이런 모양이 나와요.

%C7%D1%B1%DB 처럼 풀면 글자가 깨지는 주소는 뭔가요?

옛 한국 사이트 중에는 UTF-8이 아니라 EUC-KR(CP949)로 인코딩한 곳이 있어요. '한글'이 %C7%D1%B1%DB로 적히는 식이에요. 이 도구는 연속된 %xx 묶음마다 UTF-8로 먼저 풀어 보고 맞지 않으면 EUC-KR로 풀어서, 두 방식이 섞인 주소도 읽을 수 있게 해요.

Base64로 바꾸면 안전해지나요?

아니요. Base64는 바이트를 글자로 옮기는 표현 방식일 뿐이라 누구나 바로 되돌릴 수 있어요. 비밀번호나 토큰을 Base64로 바꿔도 보호되지 않으니, 숨겨야 하는 정보는 암호화나 접근 제한으로 지켜야 해요.

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

encodeURI는 주소 전체를 인코딩해서 : / ? # & = 같은 주소 구조 문자는 그대로 두고, encodeURIComponent는 값 한 조각을 인코딩해서 이런 문자까지 모두 %xx로 바꿔요. 검색어처럼 쿼리의 값만 넣을 때는 값 한 조각을, 완성된 주소 전체를 다룰 때는 주소 전체를 고르세요.

입력한 글이나 파일이 외부로 전송되나요?

아니요. 변환은 모두 이 브라우저 안에서만 이루어지고 서버로 전송되거나 저장되지 않아요. 파일 변환은 3MB 이하만 지원해요.

주의사항

이 도구는 변환을 도와주는 참고용이에요. 자동 감지는 모양으로 추측하기 때문에 틀릴 수 있고, EUC-KR 복원은 브라우저가 지원하는 문자 집합 범위에서만 동작해요. 입력한 글과 파일은 서버로 전송되거나 저장되지 않아요. BTSPACE WAGLE은 비공식 정보 사이트입니다.