바이트와 글자수 차이
한글이 왜 2byte 또는 3byte인지, SMS 발송과 개발에서 왜 중요한지 쉽게 설명합니다
광고 영역 (728×90)
글자수와 바이트(byte)는 다른 개념입니다. 눈에 보이는 글자 하나가 컴퓨터 내부에서 몇 byte를 차지하는지는 어떤 인코딩 방식을 사용하느냐에 따라 달라집니다. SMS 발송, 데이터베이스 저장, API 요청 시 이 차이를 모르면 예상치 못한 오류가 발생할 수 있습니다.
글자수 vs 바이트, 핵심 차이
글자수는 우리가 눈으로 세는 문자의 개수입니다. "안녕"은 2글자입니다. 반면 바이트는 컴퓨터가 그 문자를 저장하기 위해 필요한 메모리 크기입니다. "안녕"은 인코딩에 따라 4byte(EUC-KR) 또는 6byte(UTF-8)를 차지합니다.
UTF-8 vs EUC-KR 인코딩
한글을 처리하는 대표적인 인코딩 방식은 두 가지입니다.
SMS 발송에서 중요한 이유
국내 SMS 발송 시스템은 대부분 EUC-KR 인코딩을 기준으로 글자수를 제한합니다. 단문(SMS)은 90byte, 장문(LMS)은 2,000byte가 한도입니다.
| 종류 | byte 한도 | 한글 기준 글자수 | 과금 |
|---|---|---|---|
| SMS (단문) | 90 byte | 약 45자 | 저렴 |
| LMS (장문) | 2,000 byte | 약 1,000자 | 중간 |
| MMS (멀티미디어) | 이미지 포함 | 제한 상이 | 비쌈 |
주의: SMS를 90byte 이내로 작성해도 수신자 이름 등 변수가 들어가면 초과될 수 있습니다. 발송 전 반드시 실제 내용으로 바이트를 계산하세요.
데이터베이스 저장 시 주의사항
MySQL 등 데이터베이스에서 VARCHAR(100)은 100글자가 아닌 100byte를 의미하는 경우가 있습니다. UTF-8로 설정된 DB에서 한글 100자를 저장하려면 VARCHAR(300) 이상이 필요합니다.
개발 팁: MySQL 5.5 이후부터는 utf8mb4를 사용하는 것이 권장됩니다. 이모지(4byte)까지 정상 저장되기 때문입니다. utf8 설정만으로는 이모지가 저장되지 않을 수 있습니다.
정리
- 글자수 = 눈에 보이는 문자 개수
- 바이트 = 실제 메모리 크기 (인코딩에 따라 다름)
- 한글 1글자 = UTF-8에서 3byte, EUC-KR에서 2byte
- SMS 발송은 EUC-KR 기준 90byte(약 45자) 이내
- DB 설계 시 한글을 고려한 byte 여유 확보 필요
광고 영역 (300×250)