한 번 써 보면 또 묻고 싶어진다
도구 한 번 써 본 사람끼리 모이면 비슷한 질문이 오간다. 한 번 정리해 두면 다음에 다시 헷갈리는 일이 줄어든다.
Q1. 끝에 = 표시는 뭐야?
패딩(padding). Base64는 4문자 단위로 처리. 입력 길이가 3바이트 배수가 아니면 = 한두 개로 채운다. 한 개 = 또는 두 개 ==.
Q2. 결과 길이는 어떻게 정해져?
원본 길이 × 4 ÷ 3 (반올림). 100바이트 원본 → 약 136자 Base64. 약 1.33배 커진다.
Q3. 한글도 인코딩되나?
물론. 한글은 UTF-8에서 3바이트. Base64로 변환하면 약 4자. "한" → "7ZWc".
Q4. 이미지를 Base64로 만드는 이유?
HTML/CSS에 직접 임베딩 가능. 외부 이미지 파일 요청 없이 한 파일에 모든 자원 포함. 작은 아이콘에 유용. Base64 인코더로 이미지 즉시 변환.
Q5. 큰 파일도 변환되나?
가능하지만 결과가 매우 길어진다. 1MB 이미지 → 약 1.33MB Base64. 큰 파일은 일반 URL로 처리하는 편이 효율적.
Q6. atob/btoa는 뭐야?
JavaScript 내장 함수. btoa() → 인코딩, atob() → 디코딩. ASCII 문자열만 처리하므로 한글은 추가 처리 필요(encodeURIComponent 등).
Q7. URL에 그대로 써도 돼?
표준 Base64는 +, /, =가 들어 있어 URL에서 다른 의미로 해석될 수 있다. URL 파라미터에는 URL-safe Base64 사용 권장.
Q8. 여러 번 인코딩 가능?
가능. Base64를 다시 Base64로 인코딩 가능. 다만 길이가 1.33배씩 늘어나므로 자주 하는 건 아니다. Base64 디코더로 여러 단계 처리도 가능.
마무리
Base64 관련 질문은 한두 번 짚으면 다음부터 헷갈리지 않는다.