도구 소개
글자 수 계산기는 인코딩 단위별 길이를 확인하는 도구입니다. Unicode 코드 포인트, 눈에 보이는 문자소 클러스터, UTF-16 코드 단위, UTF-8 바이트를 따로 표시하므로 JavaScript의 string.length를 모든 경우의 글자 수로 오해하지 않도록 도와줍니다.
사용 방법
- 텍스트, 이모지 또는 결합 악센트 문자를 입력하세요.
- 코드 포인트 수, 공백 제외 글자 수, UTF-8 바이트 수를 확인하세요.
- 문자소 클러스터와 UTF-16 코드 단위를 비교하세요. 브라우저가 문자소 분리를 지원하지 않으면 안내가 표시됩니다.
- 원문을 복사하거나 예제를 불러와 표현 방식에 따른 차이를 확인하세요.
사용 예제
- 😀: Unicode 코드 포인트 1개, UTF-16 코드 단위 2개, UTF-8 바이트 4개입니다.
- 👨👩👧👦: Unicode 코드 포인트 7개이며, grapheme 분리를 지원하면 눈에 보이는 문자소 클러스터 1개입니다.
- e에 결합 악센트를 붙인 문자와 미리 조합된 é는 보통 같아 보이지만, 전자는 코드 포인트 2개이고 후자는 1개입니다.
집계 규칙
글자 수와 Unicode 코드 포인트는 Array.from과 같은 방식으로 코드 포인트를 순회해 셉니다. UTF-16 코드 단위는 원본 문자열 길이, UTF-8 바이트는 TextEncoder로 계산합니다. 문자소 클러스터에는 Intl.Segmenter의 grapheme 모드를 우선 사용합니다. Unicode 정규화를 하지 않아 결합 문자의 서로 다른 인코딩을 유지합니다. 원래 줄바꿈 문자도 인코딩 집계에 포함되며 마지막 줄바꿈은 마지막 빈 줄을 만듭니다. 입력 하나당 최대 2,000,000개의 UTF-16 코드 단위를 처리합니다.
주요 활용
- API, 파일, 저장 필드의 UTF-8 크기 확인.
- 이모지 때문에 발생하는 길이 차이 조사.
- 글리프, 코드 포인트, 인코딩 단위의 관계 이해.
개인정보 안내
텍스트 처리, 파일 읽기, 변환, 미리보기는 모두 현재 브라우저 안에서 이루어집니다. 입력을 업로드하지 않으며 백엔드, 데이터베이스, 온라인 API, 외부 CDN을 사용하지 않습니다. 내용을 자동 저장하지도 않습니다. 복사와 다운로드도 브라우저 안에서 처리합니다.
FAQ
이모지는 몇 글자로 세나요?
단순한 이모지는 코드 포인트 하나일 수 있지만, 가족, 국기, 피부색 조합은 여러 코드 포인트로 이루어질 수 있습니다. 문자소 클러스터 수가 눈에 보이는 개수에 더 가깝습니다.
UTF-16 길이가 글자 수보다 큰 이유는 무엇인가요?
기본 다국어 평면 밖의 코드 포인트는 UTF-16 서로게이트 쌍으로 표현하므로 코드 포인트 하나가 코드 단위 두 개를 차지할 수 있습니다.
UTF-8 바이트 수가 파일 크기인가요?
현재 텍스트를 UTF-8로 인코딩한 바이트 수입니다. 추가 파일 헤더, BOM, 파일 시스템 메타데이터는 포함하지 않습니다.
공백도 포함되나요?
일반 글자 수에는 공백이 포함됩니다. "공백 제외 글자 수"는 스페이스, 탭, 줄바꿈 및 기타 Unicode 공백을 제외합니다.
Intl.Segmenter가 없으면 어떻게 되나요?
코드 포인트, UTF-16, UTF-8은 계속 계산합니다. 문자소 클러스터 영역에는 신뢰할 수 있는 개수를 제공할 수 없다는 안내가 표시됩니다.