바이트와 글자 수의 차이 — UTF-8과 EUC-KR 계산
바이트는 저장 공간의 단위
글자 수는 사람이 읽는 단위이고, 바이트는 컴퓨터가 저장하는 단위입니다. 같은 "가"라도 인코딩 방식에 따라 차지하는 공간이 달라집니다. 오늘날 웹과 대부분의 데이터베이스는 UTF-8을 기본으로 쓰며, UTF-8에서 한글 한 글자는 3바이트입니다.
영문 알파벳과 숫자, 기본 문장부호는 1바이트입니다. 그래서 "hello"는 5글자이자 5바이트지만, "안녕하세요"는 5글자에 15바이트입니다. 같은 다섯 글자인데 저장 공간은 세 배입니다.
UTF-8 계산 규칙
UTF-8은 코드 포인트 값에 따라 바이트 폭이 달라집니다. 이 규칙만 알면 암산도 가능합니다.
- U+0000~U+007F: 1바이트 (영문, 숫자, 공백, 기본 기호)
- U+0080~U+07FF: 2바이트 (라틴 확장, 그리스 문자 등)
- U+0800~U+FFFF: 3바이트 (한글 완성형, 한자, 일본어 가나)
- U+10000 이상: 4바이트 (이모지, 일부 고대 문자)
예를 들어 "가A1"은 가 3바이트, A 1바이트, 1 1바이트로 합계 5바이트입니다. "👍"는 4바이트이고, 피부색을 붙인 "👍🏽"는 4바이트짜리 두 코드 포인트가 합쳐져 8바이트가 됩니다.
EUC-KR은 2바이트
UTF-8이 보편화되기 전에는 EUC-KR이나 CP949를 썼습니다. 이 인코딩에서 한글은 2바이트, 영문은 1바이트입니다. 그래서 옛 시스템에서 "안녕하세요"는 10바이트, UTF-8에서는 15바이트로 집계됩니다.
같은 글을 EUC-KR로 저장하면 파일 크기가 줄어들지만, EUC-KR에 없는 문자는 표현할 수 없습니다. 이모지나 베트남어 성조 문자를 넣으면 깨지거나 물음표로 바뀝니다. 오늘날 새 시스템을 만든다면 UTF-8을 쓰는 것이 표준입니다.
입력 제한을 볼 때
게시판이나 데이터베이스 칼럼에 "100바이트" 같은 제한이 걸려 있으면, 글자 수가 아니라 바이트를 봐야 합니다. UTF-8 기준으로 한글만 쓴다면 33글자(99바이트)까지 들어가고, 영문만 쓴다면 100글자까지 들어갑니다. 한글과 영문을 섞으면 그 사이 어딘가가 한계가 됩니다.
이 도구는 UTF-8 바이트 수를 따로 보여 주므로, 제한이 바이트로 적힌 시스템에 붙여 넣기 전에 미리 확인할 수 있습니다. 2026년 11월 확인 기준으로 주요 웹 서비스와 관계형 데이터베이스의 기본 문자 집합은 UTF-8이며, 오래된 사내 시스템은 여전히 EUC-KR을 쓰는 곳이 있으니 제한 문구에 적힌 단위를 먼저 읽는 것이 좋습니다.
마지막 확인: 2026-11-12