실전 안내
글자수는 왜 사이트마다 다를까?
화면에 보이는 한 글자, 유니코드 코드 포인트, UTF-16 코드 단위와 바이트의 차이를 예제로 설명합니다.
‘한 글자’라는 말에는 여러 뜻이 있습니다
사람은 ‘가’와 ‘😀’를 각각 한 글자로 봅니다. 컴퓨터는 텍스트를 숫자 코드의 배열로 저장하므로, 화면의 한 글자가 하나의 숫자일 수도 있고 여러 숫자의 조합일 수도 있습니다. 계산기가 어느 단위를 세는지에 따라 결과가 달라집니다.
네 가지 대표 단위
| 단위 | 뜻 | 주로 쓰이는 곳 |
|---|---|---|
| 자소 묶음(grapheme cluster) | 사용자가 화면에서 한 글자로 인식하는 묶음 | 글자수 표시, 편집기 커서 이동 |
| 코드 포인트 | 유니코드가 문자 요소에 부여한 번호 | 문자 분석, 표준 문서 |
| UTF-16 코드 단위 | 자바스크립트 문자열의 기본 길이 단위 | string.length, 일부 API |
| 바이트 | 저장·전송에 필요한 실제 데이터 크기 | 파일, 네트워크, 데이터베이스 |
같아 보이지만 내부 구조가 다른 예
‘é’는 하나의 코드 포인트로 저장할 수도 있고, ‘e’와 결합 악센트 두 코드 포인트로 저장할 수도 있습니다. 화면에서는 똑같이 보이지만 단순 문자열 길이는 달라질 수 있습니다. 가족 이모지처럼 여러 사람 이모지와 결합 문자가 이어진 경우도 화면에서는 한 글자이지만 내부 요소는 많습니다.
ToolsForMe의 대표 글자수 기준
브라우저가 지원하면 Intl.Segmenter의 자소 묶음 분리를 사용해 화면에서 보이는 글자에 가까운 값을 제공합니다. 지원하지 않으면 코드 포인트 단위로 대체합니다. 25만 자를 넘는 대용량 문서는 속도를 위해 코드 포인트 계산으로 전환합니다.
제출 서비스와 다를 수 있는 네 가지 이유
- 서비스가 자바스크립트
length를 그대로 사용할 수 있습니다. - 줄바꿈을 한 글자, 두 글자 또는 공백으로 바꿔 셀 수 있습니다.
- HTML 태그나 이모지를 제거한 뒤 계산할 수 있습니다.
- 서버에서 다른 유니코드 정규화나 인코딩을 적용할 수 있습니다.
제한을 넘나드는 상황에서는 한 글자 여유를 두세요
정확히 1000자를 맞추기보다 990~995자 정도로 제출하면 계산 방식 차이와 자동 줄바꿈 때문에 생길 수 있는 오류를 줄일 수 있습니다.
작성 및 검수: ToolsForMe 운영 · 최종 수정: 2026년 7월 22일