문자 인코딩 변환 가이드
인코딩이란?
인코딩(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 결과 | 설명 |
|---|---|---|
| Hello | SGVsbG8= | 영문 텍스트 |
| 한글 | 7ZWc6riA | UTF-8 기반 인코딩 |
| A | QQ== | 1바이트 → 패딩 2개 |
| AB | QUI= | 2바이트 → 패딩 1개 |
| ABC | QUJD | 3바이트 → 패딩 없음 |
사용 사례:
- 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에서 특별한 의미를 가진 문자를 텍스트로 표시하기 위한 이스케이프 방식입니다.
| 문자 | 엔티티 | 이름 | 용도 |
|---|---|---|---|
| & | & | ampersand | 엔티티 시작 문자 |
| < | < | less than | 태그 시작 |
| > | > | greater than | 태그 종료 |
| " | " | quotation mark | 속성값 구분자 |
| ' | ' | apostrophe | 속성값 구분자 |
사용 사례:
- 코드 표시: HTML 코드를 웹 페이지에 텍스트로 표시할 때
- XSS 방지: 사용자 입력을 HTML에 출력할 때 스크립트 실행 차단
- 특수 문자 표시: ©(©), ®(®), €(€) 등
보안 중요성:
사용자가 입력한 텍스트를 HTML에 그대로 출력하면 <script>alert('XSS')</script> 같은 악성 코드가 실행될 수 있습니다. HTML 엔티티 인코딩은 이런 XSS 공격을 방지하는 가장 기본적인 보안 조치입니다.
인코딩 비교표
| 특성 | URL 인코딩 | Base64 | HTML 엔티티 |
|---|---|---|---|
| 주요 용도 | URL 파라미터 | 바이너리→텍스트 | HTML 내 특수문자 |
| 크기 변화 | 한글 3배 증가 | 33% 증가 | 문자당 4~6배 |
| 가역성 | 완전 가역 | 완전 가역 | 완전 가역 |
| 문자 집합 | ASCII + %XX | A-Za-z0-9+/= | ASCII + &xxx; |
실용 팁
- 이중 인코딩 주의 — URL을 복사해서 다시 인코딩하면 %가 %25로 변환되어 오류가 발생합니다
- 프레임워크 자동 처리 — React, Vue 등 모던 프레임워크는 HTML 엔티티를 자동으로 처리합니다
- Base64 디버깅 — JWT 토큰 분석 시 각 파트를 Base64 디코딩하면 JSON 내용을 확인할 수 있습니다
- 한글 URL — 최신 브라우저는 한글 URL을 자동으로 인코딩/디코딩하여 보여줍니다
- API 테스트 시 — Postman 등의 도구가 자동 인코딩을 해주지만, 수동으로 확인할 때 이 변환기를 활용하세요
※ 이 변환기는 참고용이며, 실제 프로덕션 코드에서는 각 프로그래밍 언어의 표준 라이브러리 함수를 사용하세요.