Caracteres e bytes não são a mesma coisa
O número de caracteres é a quantidade de letras que uma pessoa vê; os bytes são o espaço que esse texto ocupa quando é armazenado no computador. O mesmo caractere pode ocupar um número diferente de bytes conforme a codificação de caracteres (a regra que transforma letras em números). Letras latinas e dígitos ocupam 1 byte em quase todas as codificações, mas o coreano pode ocupar 2 ou 3 bytes, dependendo da codificação.
UTF-8: o padrão atual
UTF-8 é a codificação usada por páginas web e pela maior parte do software moderno. Ela usa de 1 a 4 bytes conforme o tamanho do número Unicode (ponto de código) (RFC 3629).
| Faixa de pontos de código | Bytes | Exemplos |
|---|---|---|
| U+0000 ~ U+007F | 1 | Letras latinas básicas, dígitos, símbolos básicos |
| U+0080 ~ U+07FF | 2 | é, ñ, alfabetos grego, cirílico e árabe |
| U+0800 ~ U+FFFF | 3 | Hangul, kanji, kana |
| U+10000 ~ U+10FFFF | 4 | A maioria dos emojis, escritas antigas |
Todas as sílabas hangul pré-compostas (가~힣, U+AC00~U+D7A3) estão na terceira faixa, então em UTF-8 cada sílaba ocupa 3 bytes. Por exemplo, ‘안녕하세요’ (olá) tem 5 caracteres e 15 bytes.
UTF-16
O UTF-16, usado internamente em JavaScript, Java e Windows, guarda a maioria dos caracteres em 2 bytes e os que estão em U+10000 ou acima, como os emojis, em 4 bytes (par substituto). É por isso que o comprimento de string do JavaScript conta um emoji como 2.
EUC-KR: a codificação coreana de sílabas pré-compostas
EUC-KR é uma codificação baseada na norma industrial coreana KS X 1001. Letras latinas e dígitos ocupam 1 byte, e os caracteres incluídos na KS X 1001, 2 bytes. A KS X 1001 contém 2.350 sílabas hangul de uso frequente, 4.888 hanja (caracteres chineses), kana, letras gregas e cirílicas e diversos símbolos.
O problema é que, das 11.172 sílabas do hangul moderno, só 2.350 estão incluídas. Sílabas fora da lista, como ‘똠’, ‘햏’ ou ‘뷁’, não podem ser representadas com os dois bytes do EUC-KR básico. Existe um método de composição de 8 bytes definido num anexo da norma, mas poucos programas o suportam, então normalmente elas viram ‘?’ ou geram erro.
CP949: a versão estendida
O CP949 (o ‘código hangul unificado’ da Microsoft) amplia o EUC-KR para representar as 11.172 sílabas do hangul moderno em 2 bytes. Como foi a página de código coreana padrão do Windows, é muito usado em documentos e sistemas coreanos antigos. O costume de dizer ‘1 byte para o alfabeto latino, 2 bytes para o coreano’ vem em grande parte dessa codificação.
Quando os bytes importam
- SMS: na Coreia, os serviços de mensagem costumam indicar 90 bytes para um SMS e contam o hangul como 2 bytes, ou seja, cerca de 45 caracteres coreanos. Se passar disso, a mensagem vira mensagem longa (LMS) e a tarifa pode mudar; confira o critério exato do seu serviço.
- Campos de banco de dados: em configurações que medem o tamanho em bytes, como o VARCHAR2 do Oracle, 20 caracteres não ocupam o mesmo espaço em inglês e em coreano. Num banco de dados UTF-8, cada sílaba coreana ocupa 3 bytes.
- Formulários públicos e financeiros: formulários ligados a sistemas antigos às vezes limitam os campos por bytes.
Como esta ferramenta calcula
Os bytes UTF-8 são calculados com precisão a partir do ponto de código de cada caractere. Para EUC-KR e CP949, verifica-se na tabela de caracteres real de cada codificação se cada caractere pode ser representado em 2 bytes. Caracteres não representáveis (emojis, sílabas coreanas fora da lista etc.) costumam ser substituídos por um ‘?’ de um byte, então são contados como 1 byte e a quantidade deles é mostrada à parte. No modo candidatura, se você escolher o critério ‘Bytes (coreano = 2)’, a contagem segue o CP949.
Data de referência: 2026-09-23