Contador de bytes por codificação
Meça quantos bytes o seu texto ocupa em UTF-8, Shift_JIS, EUC-JP, UTF-16 e JIS (ISO-2022-JP). Útil para verificar limites de colunas de banco de dados e limites de formulários legados.
Dicas
- Em UTF-8, caracteres alfanuméricos de meia largura ocupam 1 byte cada, enquanto caracteres japoneses (hiragana, katakana, kanji) geralmente ocupam 3 bytes cada, então o mesmo número de caracteres pode significar quantidades de bytes muito diferentes entre um texto em inglês e um em japonês.
- Sistemas antigos que aplicam limites baseados em bytes a colunas como VARCHAR(255) atingem o limite muito mais rápido com texto japonês do que com um texto em inglês de mesmo comprimento em caracteres.
- A maioria dos emojis é representada por um par substituto de duas unidades de código, ocupando 4 bytes tanto em UTF-8 quanto em UTF-16, o que explica por que os contadores de caracteres das redes sociais às vezes atingem o limite antes do esperado.
- Se você já sabe uma quantidade de bytes e quer convertê-la para KB, MB ou outras unidades, use nossa ferramenta irmã "Conversor de unidades de bytes" — ela cuida do cálculo inverso, de texto para quantidade de bytes.
Perguntas frequentes
Curiosidade — A relação oculta entre os limites de caracteres das redes sociais e a contagem de bytes
Versões antigas do conjunto de caracteres "utf8" do MySQL tinham uma limitação surpreendente: na verdade não conseguiam armazenar emojis Unicode (caracteres suplementares a partir de U+10000). O UTF-8 em si é uma codificação de tamanho variável que suporta até 4 bytes por caractere, mas o "utf8" do MySQL era historicamente limitado a 3 bytes por caractere, causando erros de INSERT sempre que um texto com emojis era salvo. Migrar para o "utf8mb4", que suporta corretamente todo o intervalo de 4 bytes, é hoje a solução recomendada — um exemplo bem conhecido de por que entender a relação entre codificação de caracteres e contagem de bytes realmente importa na prática.
Na época em que o Twitter (hoje X) aplicava seu famoso limite de 140 caracteres, houve um longo debate sobre a equidade entre idiomas: usuários de japonês conseguiam expressar uma ideia bastante completa em 140 caracteres, enquanto usuários de inglês mal conseguiam escrever 20 a 30 palavras no mesmo limite. Isso acontece porque um único caractere kanji japonês pode carregar muito mais informação do que uma única letra em inglês. O Twitter acabou introduzindo um sistema de contagem ponderada, no qual idiomas como o japonês contavam como "1 caractere = 1 ponto", enquanto outros contavam certos caracteres como "2 bytes = 1 ponto", numa tentativa de equilibrar as coisas entre os idiomas.
O SMS em celulares tem uma peculiaridade parecida. Um SMS codificado no padrão GSM permite até 160 caracteres por mensagem, mas assim que inclui um único caractere fora do conjunto de caracteres GSM de 7 bits — como um emoji ou um caractere japonês —, a codificação muda para UCS-2 (aproximadamente equivalente ao UTF-16), e o limite cai bruscamente para apenas 70 caracteres. O fato de usar um único caractere japonês poder reduzir o comprimento disponível da mensagem a menos da metade é um exemplo perfeito e real da relação entre codificação de caracteres e contagem de bytes que esta ferramenta foi criada para medir.