글자수
인코딩마다 한글이 차지하는 크기가 다릅니다. 두 기준을 같이 보여 줍니다.
| 인코딩 | 한글 1자 | 영문·숫자 1자 | 주로 쓰는 곳 |
|---|---|---|---|
| UTF-8 | 3 | 1 | 웹, 최신 데이터베이스, 파일 이름 |
| EUC-KR · CP949 | 2 | 1 | 문자 발송, 오래된 윈도 프로그램 |
| UTF-16 | 2 | 2 | 자바·자바스크립트 내부 문자열 |
단문(SMS)은 EUC-KR 기준 90바이트까지입니다. 한글로는 45자, 영문·숫자로는 90자입니다. 이를 넘으면 장문(LMS)이 되고 2,000바이트까지 들어갑니다. 통신사마다 한두 바이트 차이가 있을 수 있어 꽉 채우지 않는 편이 안전합니다.
데이터베이스의 VARCHAR(100) 같은 제한이 100글자인지 100바이트인지는 데이터베이스와 설정에 따라 다릅니다. 바이트 기준이면 한글은 33자밖에 안 들어갑니다.
한글이 섞인 값을 저장했는데 잘려 나간다면 이 때문입니다. UTF-8에서 한글 한 자가 3바이트를 차지합니다. 이모지는 더 큽니다. 한 글자처럼 보여도 4바이트 이상인 경우가 많습니다.
파일 이름 길이 제한도 바이트로 걸리는 경우가 많습니다. 한글 파일명이 유난히 짧게 잘리는 이유입니다.
서버에 올릴 때 이름이 깨지거나 잘린다면 영문으로 바꾸는 쪽이 간단합니다.
인코딩은 글자를 숫자로 바꿔 저장하는 약속입니다. 약속이 다르면 크기가 달라집니다.
UTF-8은 영문을 1바이트로 아끼는 대신 한글에 3바이트를 씁니다. EUC-KR은 한글을 2바이트로 처리하지만 영문 외의 다른 나라 글자를 담지 못합니다. 지금은 UTF-8이 사실상 표준이고, EUC-KR은 문자 발송과 오래된 프로그램에 남아 있습니다.
← 글자수 세기로