Pular para o conteúdo
LeedyBox
Apoiar

Como palavras e caracteres são contados

Cole o mesmo texto em dois aplicativos e você pode obter duas contagens diferentes. Nenhuma delas está necessariamente errada: elas estão contando coisas diferentes. Este guia explica as unidades mais comuns e por que os números variam.

Quatro formas de contar caracteres

Os computadores armazenam texto em Unicode, e um "caractere" pode ser medido em vários níveis:

  • Clusters de grafemas são o que o leitor vê como um caractere, como "é", "한" ou "👍🏽".
  • Code points são os valores Unicode individuais. Um caractere visível pode ser formado por vários code points.
  • Unidades de código UTF-16 são o que o length do JavaScript e várias outras linguagens de programação contam. Caracteres fora do Plano Multilíngue Básico, incluindo a maioria dos emojis, ocupam duas unidades.
  • Bytes UTF-8 são o que um arquivo ou uma coluna de banco de dados armazena. Letras ASCII ocupam um byte, letras latinas acentuadas geralmente dois, caracteres coreanos, chineses e japoneses geralmente três, e emojis quatro ou mais.
Texto Grafemas Code points Unidades UTF-16 Bytes UTF-8
a 1 1 1 1
é (um único code point) 1 1 1 2
é (e + acento combinante) 1 2 2 3
한 (sílaba coreana) 1 1 1 3
👍 1 1 2 4
👍🏽 (com tom de pele) 1 2 4 8
👨‍👩‍👧 (emoji de família) 1 5 8 18

Acentos combinantes e texto em coreano

Alguns caracteres podem ser armazenados de mais de uma forma. "é" pode ser um único code point pré-composto ou um "e" simples seguido de um acento combinante. Os dois parecem idênticos, mas a segunda forma tem um code point e um byte a mais. Textos copiados de alguns sistemas, como nomes de arquivos em certos sistemas operacionais, podem usar a forma decomposta.

O coreano tem o mesmo problema. Uma sílaba como "한" geralmente é armazenada como um code point, mas também pode ser escrita com jamos separados (ㅎ, ㅏ, ㄴ) que se combinam na tela. Um contador baseado em grafemas mostra 1 nos dois casos, enquanto uma contagem de code points mostra 1 ou 3. A normalização Unicode (NFC ou NFD) converte entre as duas formas.

Contagem de palavras em diferentes idiomas

Em inglês, separar pelos espaços dá uma contagem de palavras razoável, embora palavras com hífen, contrações, números e URLs ainda possam ser contados de forma diferente por ferramentas diferentes.

Chinês, japonês e tailandês geralmente são escritos sem espaços entre as palavras, então separar pelos espaços contaria uma frase inteira como uma palavra. Contadores melhores usam um segmentador de palavras baseado em dicionários e regras. O contador do LeedyBox usa o Intl.Segmenter do navegador, que identifica os limites de palavras em muitos idiomas. Nesses idiomas, a segmentação é uma questão de convenção, então os resultados podem diferir de outras ferramentas ou da contagem feita por uma pessoa. Por esse motivo, algumas editoras desses idiomas contam caracteres em vez de palavras.

Por que aplicativos e sites contam de forma diferente

Um limite como "no máximo 280 caracteres" ou "VARCHAR(255)" pode ser medido em grafemas, code points, unidades UTF-16 ou bytes, dependendo do sistema. Alguns serviços também contam um link com um comprimento fixo ou atribuem mais peso a certos sistemas de escrita. Quando precisar caber em um limite, descubra qual unidade o sistema de destino usa e compare com esse número. O contador do LeedyBox mostra grafemas, unidades UTF-16 e bytes UTF-8 lado a lado e inclui um verificador de limite, para que você veja o quanto está perto do limite na unidade relevante.

Linhas, parágrafos e quebras de linha

A contagem de linhas depende de como as quebras de linha são armazenadas. O Windows normalmente usa dois caracteres (CR LF), enquanto o Linux e o macOS usam um (LF). Uma ferramenta que conta caracteres brutos pode contar uma quebra de linha do Windows como dois. Uma quebra de linha no final do texto pode ou não contar como uma linha vazia extra. Os parágrafos geralmente são contados como blocos separados por uma ou mais linhas em branco, então uma única quebra de linha dentro de um parágrafo não inicia um novo.

Estimativas de tempo de leitura

O tempo de leitura é calculado dividindo a contagem de palavras por uma velocidade de leitura presumida. A velocidade real varia conforme o leitor, o idioma e o grau de tecnicidade do texto, e a própria contagem de palavras depende da segmentação. Trate a estimativa como uma referência aproximada para planejamento, e não como uma medição.

Perguntas frequentes

Por que um emoji conta como 2 caracteres em alguns aplicativos?

Esses aplicativos contam unidades de código UTF-16. A maioria dos emojis é armazenada como duas unidades, e emojis com tons de pele ou que combinam pessoas usam mais.

Qual contagem devo usar para o limite de uma coluna de banco de dados?

Consulte a documentação do banco de dados. Alguns limites são em caracteres e outros em bytes, então a contagem de bytes UTF-8 costuma ser a que deve ser comparada.

O contador envia o meu texto para algum lugar?

O Contador de palavras e caracteres do LeedyBox funciona no seu navegador, então o texto que você cola é contado no seu dispositivo.