한글은 왜 2바이트이기도 하고 3바이트이기도 할까
글자를 숫자로 적는 방식(인코딩)이 달라서예요. EUC-KR은 한글 한 자를 2바이트로, UTF-8은 3바이트로, UTF-16은 2바이트로 적어요. 같은 '가'인데 적는 법만 다른 거예요.
글자별 바이트 수
이 사이트의 바이트 계산기로 한 글자씩 넣어 센 값이에요.
| 글자 | UTF-8 | EUC-KR | UTF-16 |
|---|---|---|---|
| A (영문) | 1 | 1 | 2 |
| 띄어쓰기 | 1 | 1 | 2 |
| 가 (한글) | 3 | 2 | 2 |
| 漢 (한자) | 3 | 2 | 2 |
| € | 3 | 2 | 2 |
| 😀 | 4 | 못 담음 | 4 |
영문과 숫자만 쓴 글은 UTF-8과 EUC-KR의 바이트 수가 같아요. 차이는 한글과 한자에서 생겨요.
EUC-KR과 한글 2,350자
EUC-KR의 바탕인 국가표준 KS X 1001에는 한글이 2,350자, 한자가 4,888자 들어 있어요. 그런데 초성, 중성, 종성을 조합해 만들 수 있는 현대 한글은 11,172자예요. 나머지 8,822자는 이 표에 없어요.
윈도우가 쓰는 확장판(CP949)은 빠진 8,822자까지 모두 2바이트로 넣었어요. 브라우저가 EUC-KR이라고 부르는 것도 이 확장판이에요. 이 사이트는 확장판 표를 한 글자씩 대조해서, 2바이트로 담기는 글자가 17,048자이고 그 가운데 한글이 11,172자인 것을 확인했어요.
예를 들어 '똠'은 2,350자에 없는 글자예요. 확장판으로는 2바이트로 적을 수 있지만, 옛 완성형만 받는 곳에서는 적을 수 없어요. 바이트 계산기는 이런 글자가 글에 몇 자 있는지 따로 알려 줘요.