CalcBang

문자 인코딩 변환기 - URL·Base64·HTML 엔티티 변환

텍스트를 입력하면 변환 결과가 표시됩니다.

※ 이 변환기는 클라이언트 측에서 처리되며 서버로 데이터가 전송되지 않습니다. Base64는 암호화가 아닌 인코딩이므로 보안 목적으로 사용하면 안 됩니다.

문자 인코딩 변환 가이드

인코딩이란?

인코딩(Encoding)은 데이터를 특정 규칙에 따라 다른 형태로 변환하는 과정입니다. 웹 개발, API 통신, 데이터 전송 등에서 문자를 안전하게 전달하기 위해 반드시 필요한 기술입니다. 이 변환기에서는 웹 개발에서 가장 많이 사용되는 세 가지 인코딩 방식을 지원합니다.

1. URL 인코딩 (Percent Encoding)

URL에는 사용할 수 있는 문자가 제한되어 있습니다. ASCII 영문자, 숫자, 그리고 일부 특수문자(-_.~)만 URL에 그대로 포함할 수 있으며, 나머지 문자는 퍼센트 인코딩으로 변환해야 합니다.

원본 문자인코딩 결과설명
공백%20가장 흔한 인코딩
%EA%B0%80한글 (UTF-8 3바이트)
&%26쿼리 구분자와 충돌 방지
=%3D키-값 구분자와 충돌 방지
?%3F쿼리 시작 문자와 충돌 방지

사용 사례:

  • 검색 쿼리: https://search.com?q=%ED%95%9C%EA%B8%80
  • API 파라미터: /api/users?name=%EA%B9%80%EC%B2%A0%EC%88%98
  • 폼 데이터 전송

주의사항:

  • 이미 인코딩된 문자열을 다시 인코딩하면 이중 인코딩이 되어 %25가 포함됩니다
  • URL 전체가 아닌 파라미터 값만 인코딩해야 합니다 (encodeURIComponent 사용)

2. Base64 인코딩

Base64는 바이너리 데이터를 64개의 안전한 ASCII 문자(A-Z, a-z, 0-9, +, /)로 표현하는 인코딩 방식입니다. 패딩 문자로 =를 사용합니다.

원본Base64 결과설명
HelloSGVsbG8=영문 텍스트
한글7ZWc6riAUTF-8 기반 인코딩
AQQ==1바이트 → 패딩 2개
ABQUI=2바이트 → 패딩 1개
ABCQUJD3바이트 → 패딩 없음

사용 사례:

  • Data URI: <img src="data:image/png;base64,iVBOR..."> — 작은 이미지를 HTML에 직접 삽입
  • 이메일 첨부: MIME 인코딩에서 바이너리 파일 전송
  • JWT 토큰: Header.Payload.Signature 각 부분이 Base64URL로 인코딩
  • Basic 인증: Authorization: Basic dXNlcjpwYXNz (user:pass의 Base64)
  • 바이너리 데이터의 JSON 전송: JSON은 바이너리를 직접 포함할 수 없으므로 Base64로 변환

주의사항:

  • Base64는 암호화가 아닙니다 — 누구나 쉽게 디코딩할 수 있으므로 비밀번호나 민감 정보 보호에 사용하면 안 됩니다
  • 원본 대비 약 33% 크기가 증가합니다
  • Base64URL 변형은 +를 -, /를 _로 대체하여 URL에서 안전하게 사용합니다

3. HTML 엔티티 (Entity)

HTML에서 특별한 의미를 가진 문자를 텍스트로 표시하기 위한 이스케이프 방식입니다.

문자엔티티이름용도
&&amp;ampersand엔티티 시작 문자
<&lt;less than태그 시작
>&gt;greater than태그 종료
"&quot;quotation mark속성값 구분자
'&#39;apostrophe속성값 구분자

사용 사례:

  • 코드 표시: HTML 코드를 웹 페이지에 텍스트로 표시할 때
  • XSS 방지: 사용자 입력을 HTML에 출력할 때 스크립트 실행 차단
  • 특수 문자 표시: ©(&copy;), ®(&reg;), €(&euro;) 등

보안 중요성: 사용자가 입력한 텍스트를 HTML에 그대로 출력하면 <script>alert('XSS')</script> 같은 악성 코드가 실행될 수 있습니다. HTML 엔티티 인코딩은 이런 XSS 공격을 방지하는 가장 기본적인 보안 조치입니다.

인코딩 비교표

특성URL 인코딩Base64HTML 엔티티
주요 용도URL 파라미터바이너리→텍스트HTML 내 특수문자
크기 변화한글 3배 증가33% 증가문자당 4~6배
가역성완전 가역완전 가역완전 가역
문자 집합ASCII + %XXA-Za-z0-9+/=ASCII + &xxx;

실용 팁

  1. 이중 인코딩 주의 — URL을 복사해서 다시 인코딩하면 %가 %25로 변환되어 오류가 발생합니다
  2. 프레임워크 자동 처리 — React, Vue 등 모던 프레임워크는 HTML 엔티티를 자동으로 처리합니다
  3. Base64 디버깅 — JWT 토큰 분석 시 각 파트를 Base64 디코딩하면 JSON 내용을 확인할 수 있습니다
  4. 한글 URL — 최신 브라우저는 한글 URL을 자동으로 인코딩/디코딩하여 보여줍니다
  5. API 테스트 시 — Postman 등의 도구가 자동 인코딩을 해주지만, 수동으로 확인할 때 이 변환기를 활용하세요

※ 이 변환기는 참고용이며, 실제 프로덕션 코드에서는 각 프로그래밍 언어의 표준 라이브러리 함수를 사용하세요.

자주 묻는 질문

URL 인코딩(Percent Encoding)이란 무엇인가요?

URL 인코딩은 URL에 포함될 수 없는 문자(한글, 공백, 특수문자 등)를 '%XX' 형태의 퍼센트 인코딩으로 변환하는 방식입니다. 예를 들어 공백은 %20, 한글 '가'는 %EA%B0%80으로 변환됩니다. 웹 브라우저 주소창, API 쿼리 파라미터, 폼 데이터 전송 등에서 필수적으로 사용됩니다. JavaScript에서는 encodeURIComponent() 함수로 수행합니다.

Base64 인코딩은 언제 사용하나요?

Base64는 바이너리 데이터를 ASCII 문자열로 변환하는 인코딩 방식으로, A-Z, a-z, 0-9, +, / 총 64개의 문자를 사용합니다. 이메일 첨부파일(MIME), 이미지를 HTML/CSS에 직접 삽입(Data URI), JWT 토큰, API 인증 헤더(Basic Auth), 바이너리 데이터의 JSON 전송 등에 사용됩니다. 암호화가 아닌 인코딩이므로 보안 목적으로는 사용하면 안 됩니다.

HTML 엔티티(Entity)는 왜 필요한가요?

HTML 엔티티는 HTML 문서에서 특수한 의미를 가진 문자(<, >, &, ", ')를 안전하게 표현하기 위한 이스케이프 방식입니다. 예를 들어 <script>를 텍스트로 표시하려면 &lt;script&gt;로 변환해야 합니다. XSS(크로스 사이트 스크립팅) 공격을 방지하고, HTML 구조가 깨지지 않도록 보호하는 웹 보안의 기본입니다.

encodeURI와 encodeURIComponent의 차이는 무엇인가요?

encodeURI()는 전체 URI를 인코딩하되 URI 구조 문자(:, /, ?, #, & 등)는 그대로 유지합니다. 반면 encodeURIComponent()는 모든 특수문자를 인코딩하여 쿼리 파라미터 값으로 안전하게 사용할 수 있게 합니다. 예: encodeURI('https://example.com/검색?q=hello world')는 URL 구조를 유지하지만, encodeURIComponent('hello world')는 'hello%20world'로 변환합니다. 일반적으로 파라미터 값에는 encodeURIComponent를 사용합니다.

유니코드(한글)를 Base64로 인코딩하려면 어떻게 하나요?

JavaScript의 btoa() 함수는 Latin-1(ISO 8859-1) 문자만 지원하므로 한글 등 유니코드 문자를 직접 처리할 수 없습니다. 이를 해결하려면 TextEncoder로 문자열을 UTF-8 바이트 배열로 변환한 뒤 btoa()를 적용하면 됩니다. 디코딩할 때는 atob()로 바이너리 문자열을 얻은 뒤 TextDecoder로 UTF-8을 다시 문자열로 변환합니다. 이 계산기는 이 과정을 자동으로 처리합니다.

퍼센트 인코딩에서 %20과 +의 차이는 무엇인가요?

공백을 URL에서 표현하는 방식에는 두 가지가 있습니다. %20은 RFC 3986 표준에 따른 퍼센트 인코딩이고, +는 HTML 폼의 application/x-www-form-urlencoded 방식입니다. encodeURIComponent()는 공백을 %20으로 변환하며, HTML 폼 제출 시에는 +로 변환됩니다. 최신 웹 표준에서는 %20 사용을 권장합니다.

Base64 인코딩은 데이터 크기를 얼마나 증가시키나요?

Base64 인코딩은 원본 데이터 대비 약 33% 크기가 증가합니다. 3바이트의 원본 데이터가 4개의 Base64 문자(4바이트)로 변환되기 때문입니다. 예를 들어 100KB 이미지는 Base64로 인코딩하면 약 133KB가 됩니다. 따라서 큰 파일을 Base64로 인코딩하여 전송하는 것은 비효율적이며, 작은 아이콘이나 짧은 데이터에 주로 사용합니다.

관련 계산기