입력 제한에 ‘500자’라고 적혀 있으면 보통 문자 개수를 확인하면 됩니다. 하지만 ‘1,500 byte’라고 적혀 있다면 이야기가 달라집니다. 바이트는 글의 길이가 아니라 문자를 컴퓨터에 저장하거나 전송할 때 필요한 데이터 크기를 나타냅니다.
한글과 영문이 섞인 글도 브라우저에서 바로 계산합니다.
글자 수와 바이트는 다르다
글자 수는 사람이 읽고 구분하는 문자의 개수를 말합니다. 바이트는 컴퓨터가 그 문자를 표현하기 위해 사용하는 데이터의 양입니다. 같은 다섯 글자라도 어떤 문자와 인코딩을 사용했는지에 따라 전체 바이트는 달라질 수 있습니다.
웹에서는 UTF-8 인코딩이 널리 사용됩니다. UTF-8은 영문, 한글, 한자, 이모지처럼 다양한 유니코드 문자를 1바이트부터 여러 바이트까지 가변 길이로 표현합니다.
영문 알파벳·숫자·기본 기호는 보통 1바이트, 완성형 한글 음절은 보통 3바이트, 많은 이모지는 4바이트를 사용합니다. 여러 문자가 합쳐진 이모지는 그보다 더 커질 수 있습니다.
예시로 비교하기
영문과 숫자
ABC123은 6글자이며 UTF-8에서도 보통 6바이트입니다. 영문 대·소문자와 숫자는 각각 1바이트로 표현되기 때문입니다.
한글
머스트랩은 4글자지만 UTF-8에서는 일반적으로 12바이트입니다. 완성형 한글 음절 하나가 보통 3바이트를 사용하기 때문입니다. 따라서 한글 중심의 글에서는 ‘1,000바이트’가 ‘1,000글자’를 의미하지 않습니다.
공백과 줄바꿈
일반 스페이스도 문자 데이터이므로 UTF-8에서 1바이트를 차지합니다. 줄바꿈은 환경에 따라 하나 또는 두 개의 제어 문자로 저장될 수 있습니다. 웹 브라우저의 입력값과 파일로 저장된 문서의 바이트가 조금 다르게 보일 수 있는 이유입니다.
이모지와 결합 문자
하나의 이모지가 보통 4바이트를 차지하기도 하고, 피부색·가족·직업처럼 여러 요소가 결합된 이모지는 여러 유니코드 문자가 묶여 훨씬 큰 데이터를 만들기도 합니다. 화면에서 한 글자로 보여도 내부적으로는 여러 요소일 수 있다는 뜻입니다.
계산기마다 숫자가 다를 수 있는 이유
첫째, 바이트 계산에 사용한 인코딩이 다를 수 있습니다. UTF-8과 다른 문자 인코딩은 한글을 표현하는 크기가 다릅니다. 제출 안내에 인코딩이 적혀 있다면 그 기준을 따라야 합니다.
둘째, 글자 수를 세는 단위가 다를 수 있습니다. 프로그래밍 언어의 문자열 길이, 유니코드 코드 포인트 수, 사람이 한 글자로 느끼는 문자 묶음 수는 이모지와 결합 문자가 포함될 때 서로 달라질 수 있습니다.
셋째, 복사·붙여넣기 과정에서 보이지 않는 공백이나 마지막 줄바꿈이 들어갈 수 있습니다. 공백 제외 글자 수는 같지만 공백 포함 글자 수와 바이트가 1씩 늘어났다면 끝에 줄바꿈이 하나 들어갔는지 확인해 볼 수 있습니다.
바이트 제한을 맞추는 방법
- 제한 단위를 확인합니다. 자, 글자, byte 가운데 무엇인지 먼저 확인합니다.
- 인코딩 안내를 찾습니다. UTF-8이라고 적혀 있다면 UTF-8 계산 결과를 사용합니다.
- 원문 전체를 붙여넣습니다. 제목, 줄바꿈, 특수문자도 실제 제출할 형태 그대로 넣습니다.
- 제한보다 여유를 둡니다. 제출 시스템이 줄바꿈을 다르게 처리할 가능성을 고려해 몇 바이트의 여유를 남깁니다.
- 실제 입력 화면을 확인합니다. 사이트가 자체 계산값을 보여준다면 그 숫자가 최종 기준입니다.
머스트랩 계산 결과 읽기
머스트랩 글자 수 세기의 ‘UTF-8 바이트’는 브라우저가 텍스트를 UTF-8로 인코딩했을 때의 길이를 표시합니다. 글자 수와 바이트를 나란히 보여주므로 한글·영문·이모지가 섞인 글의 차이를 바로 비교할 수 있습니다.
입력한 글은 서버로 전송하지 않고 현재 기기에서만 처리합니다. 자기소개서나 지원서처럼 공개하고 싶지 않은 글도 회원가입 없이 계산할 수 있지만, 최종 제출 규칙은 반드시 해당 기관의 안내와 입력 화면에서 다시 확인해야 합니다.