한글 자모와 이모지는 몇 글자로 셀까

글자 하나를 어떻게 정의할까

컴퓨터가 글자를 세는 방식은 사람이 세는 방식과 다를 수 있습니다. 운영체제와 프로그램은 내부적으로 유니코드 코드 포인트라는 번호를 씁니다. 이 도구는 코드 포인트 하나를 한 글자로 셉니다. 여기서 갈리는 대표적인 사례가 한글 자모와 이모지입니다.

자바스크립트의 문자열 길이는 UTF-16 코드 단위를 세기 때문에, 같은 글자라도 도구마다 숫자가 달라집니다. 어떤 사이트는 이모지를 두 글자로, 어떤 사이트는 한 글자로 표시합니다.

완성형 한글은 한 글자

"한"은 유니코드에서 U+D55C 하나의 코드 포인트입니다. 그래서 글자 수 1, UTF-8 바이트 3입니다. "글자수세기"는 다섯 글자, 15바이트입니다. 우리가 일상에서 쓰는 완성형 한글은 모두 이 규칙을 따릅니다.

자모를 풀어 쓰면 세 글자

같은 소리를 자모로 분리하면 숫자가 달라집니다. "한"을 "ㅎㅏㄴ"으로 풀어 쓰면 자음과 모음이 각각 별개의 코드 포인트가 되어 세 글자, 9바이트가 됩니다. 보이는 모양은 비슷하지만 저장 구조가 완전히 다릅니다.

이 차이는 검색이나 정렬에서도 문제를 일으킵니다. 자모로 입력한 글은 완성형으로 쓴 글과 다른 문자열로 취급되어, 같은 단어를 찾아도 걸리지 않을 수 있습니다.

이모지는 코드 포인트에 따라 다르다

기본 이모지 "👍"는 U+1F44D 하나로, 글자 수 1, UTF-8 4바이트입니다. 그런데 피부색을 붙이면 코드 포인트가 두 개가 되어 두 글자, 8바이트로 계산됩니다. 가족 이모지처럼 여러 사람이 합쳐진 경우에는 다섯 개 이상의 코드 포인트가 연결되기도 합니다.

여기에 결합 문자도 있습니다. "e" 뒤에 악센트 기호를 붙인 "é"는 화면에는 한 글자로 보이지만 코드 포인트는 두 개입니다. 일부 프로그램은 이런 문자열을 하나로 합쳐(정규화) 세기도 합니다.

세는 기준이 다르면 숫자도 다르다

같은 글을 붙여 넣어도 사이트마다 결과가 다른 이유가 여기 있습니다. UTF-16 코드 단위로 세는 도구는 이모지 하나를 두 글자로, 코드 포인트로 세는 도구는 한 글자로 표시합니다. 글자 수 제한이 있는 곳에 이모지를 넣을 때는 그 사이트의 계산 방식을 먼저 확인하는 편이 안전합니다. 이 도구는 코드 포인트 기준임을 화면에 밝혀 두었으니, 다른 사이트와 숫자가 조금 다를 수 있다는 점을 감안하세요.

마지막 확인: 2026-11-12

함께 쓰면 좋은 서비스