본문으로 건너뛰기
LeedyBox
후원

단어 수와 글자 수를 세는 방식

같은 텍스트를 두 앱에 붙여넣으면 서로 다른 개수가 나올 수 있습니다. 어느 쪽이 꼭 틀린 것은 아닙니다. 서로 다른 것을 세고 있을 뿐입니다. 이 가이드에서는 자주 쓰는 단위와 숫자가 달라지는 이유를 설명합니다.

글자를 세는 네 가지 방법

컴퓨터는 텍스트를 유니코드로 저장하며, "글자"는 여러 수준에서 셀 수 있습니다.

  • 문자소 클러스터(grapheme cluster)는 "é", "한", "👍🏽"처럼 읽는 사람이 한 글자로 보는 단위입니다.
  • 코드 포인트는 개별 유니코드 값입니다. 눈에 보이는 한 글자가 여러 코드 포인트로 이루어질 수 있습니다.
  • UTF-16 코드 단위는 JavaScript의 length와 몇몇 다른 프로그래밍 언어가 세는 단위입니다. 대부분의 이모지를 포함해 기본 다국어 평면(BMP) 밖의 문자는 2단위를 차지합니다.
  • UTF-8 바이트는 파일이나 데이터베이스 열에 저장되는 단위입니다. ASCII 문자는 1바이트, 악센트가 붙은 라틴 문자는 보통 2바이트, 한국어·중국어·일본어 문자는 보통 3바이트, 이모지는 4바이트 이상을 차지합니다.
텍스트 문자소 코드 포인트 UTF-16 단위 UTF-8 바이트
a 1 1 1 1
é (단일 코드 포인트) 1 1 1 2
é (e + 결합 악센트) 1 2 2 3
한 (한글 음절) 1 1 1 3
👍 1 1 2 4
👍🏽 (피부색 지정) 1 2 4 8
👨‍👩‍👧 (가족 이모지) 1 5 8 18

결합 악센트와 한글

어떤 글자는 두 가지 이상의 방식으로 저장될 수 있습니다. "é"는 미리 합쳐진 단일 코드 포인트일 수도 있고, 일반 "e" 뒤에 결합 악센트가 붙은 형태일 수도 있습니다. 둘은 똑같아 보이지만 두 번째 형태는 코드 포인트와 바이트가 하나씩 더 많습니다. 일부 운영체제의 파일 이름처럼 특정 시스템에서 복사한 텍스트는 분해된 형태를 쓸 수 있습니다.

한글에도 같은 문제가 있습니다. "한" 같은 음절은 보통 하나의 코드 포인트로 저장되지만, 화면에서 합쳐져 보이는 개별 자모(ㅎ, ㅏ, ㄴ)로 쓸 수도 있습니다. 문자소 기준으로 세는 도구는 두 경우 모두 1을 보여 주지만, 코드 포인트 기준으로 세면 1 또는 3이 나옵니다. 유니코드 정규화(NFC 또는 NFD)로 두 형태를 서로 변환할 수 있습니다.

언어별 단어 수 세기

영어에서는 공백으로 나누면 꽤 합리적인 단어 수가 나오지만, 하이픈으로 연결된 단어, 축약형, 숫자, URL은 도구마다 다르게 셀 수 있습니다.

중국어, 일본어, 태국어는 보통 단어 사이를 띄어 쓰지 않으므로, 공백으로 나누면 문장 전체가 한 단어로 세어집니다. 더 나은 도구는 사전과 규칙에 기반한 단어 분할기를 사용합니다. LeedyBox 단어·글자 수 세기는 브라우저의 Intl.Segmenter를 사용하며, 이는 여러 언어에서 단어 경계를 찾아냅니다. 이러한 언어의 단어 분할은 관례의 문제이므로 결과가 다른 도구나 사람이 센 결과와 다를 수 있습니다. 그래서 이들 언어권의 일부 출판사는 단어 수 대신 글자 수를 셉니다.

앱과 웹사이트마다 세는 방식이 다른 이유

"최대 280자"나 "VARCHAR(255)" 같은 제한은 시스템에 따라 문자소, 코드 포인트, UTF-16 단위, 바이트 중 어느 것으로든 잴 수 있습니다. 일부 서비스는 링크를 고정된 길이로 세거나 특정 문자 체계를 더 무겁게 셉니다. 제한에 맞춰야 한다면 대상 시스템이 어떤 단위를 쓰는지 확인하고 그 숫자와 비교하세요. LeedyBox 단어·글자 수 세기는 문자소, UTF-16 단위, UTF-8 바이트를 나란히 보여 주고 길이 제한 확인 기능도 있어, 해당 단위로 제한에 얼마나 가까운지 확인할 수 있습니다.

줄, 문단, 줄바꿈

줄 수는 줄바꿈이 어떻게 저장되는지에 따라 달라집니다. Windows는 보통 두 문자(CR LF)를, Linux와 macOS는 한 문자(LF)를 씁니다. 원시 문자를 세는 도구는 Windows 줄바꿈을 두 글자로 셀 수 있습니다. 텍스트 맨 끝의 줄바꿈은 빈 줄 하나로 더 세어질 수도 있고 아닐 수도 있습니다. 문단은 보통 하나 이상의 빈 줄로 구분된 덩어리로 세므로, 문단 안의 줄바꿈 하나로는 새 문단이 시작되지 않습니다.

읽기 시간 추정

읽기 시간은 단어 수를 가정한 읽기 속도로 나누어 계산합니다. 실제 속도는 읽는 사람, 언어, 텍스트의 전문성에 따라 달라지며, 단어 수 자체도 단어 분할 방식에 따라 달라집니다. 추정치는 측정값이 아니라 계획을 세우기 위한 대략적인 참고로 보세요.

자주 묻는 질문

일부 앱에서 이모지 하나가 왜 2글자로 세어지나요?

그런 앱은 UTF-16 코드 단위를 셉니다. 대부분의 이모지는 2단위로 저장되며, 피부색이 지정되었거나 여러 사람이 결합된 이모지는 더 많은 단위를 씁니다.

데이터베이스 열의 길이 제한에는 어떤 개수를 써야 하나요?

데이터베이스 문서를 확인하세요. 제한이 글자 단위인 경우도 있고 바이트 단위인 경우도 있어, UTF-8 바이트 수와 비교해야 하는 경우가 많습니다.

글자 수 세기 도구가 제 텍스트를 어딘가로 보내나요?

LeedyBox 단어·글자 수 세기는 브라우저에서 실행되므로, 붙여넣은 텍스트는 사용자의 기기에서 세어집니다.