onlinetools.dev

Inspetor de caracteres Unicode

Veja code points, bytes UTF-8/UTF-16 e escapes de cada caractere

Roda localmente
loading…
Sobre esta ferramenta

Cole qualquer texto e veja cada caractere dissecado: seu ponto de código (U+XXXX), bytes UTF-8, unidades UTF-16, sequência de escape JavaScript, entidade HTML e categoria geral — além dos totais de pontos de código, unidades UTF-16, bytes UTF-8 e caracteres percebidos pelo usuário (grafemas).

Esta é a ferramenta para os momentos de "por que essa string está estranha?": caracteres invisíveis (espaços de largura zero, BOMs, marcas direcionais) aparecem como linhas visíveis; caracteres parecidos (а cirílico vs a latino) revelam pontos de código diferentes; e um emoji que "é um caractere" acaba sendo sete pontos de código unidos por zero-width joiners.

Os quatro totais diferentes de comprimento respondem à eterna pergunta de por que o .length do JavaScript, um limite de bytes de banco de dados e o que o usuário vê discordam sobre o tamanho de uma string.

Perguntas frequentes

Por que "🎉".length === 2 em JavaScript?
Strings JavaScript contam unidades de código UTF-16. Caracteres além de U+FFFF — incluindo a maioria dos emoji — precisam de um par substituto, duas unidades. O inspetor mostra as duas unidades e o ponto de código real, e o resumo os conta separadamente.
O que é um grafema (grapheme cluster)?
O que um leitor percebe como um caractere. é pode ser dois pontos de código (e + acento combinante), e emoji de família podem ser sete ou mais unidos por zero-width joiners. A contagem de grafemas usa o Intl.Segmenter do navegador — o mais próximo que existe de "caracteres como os usuários os veem".
Como encontro caracteres invisíveis em uma string?
Cole-a aqui — cada ponto de código ganha uma linha, incluindo espaços de largura zero (U+200B), espaços inseparáveis (U+00A0), BOMs (U+FEFF) e marcas direcionais, cada um rotulado por categoria. Esses são os culpados clássicos por trás de strings "idênticas" que falham em comparações de igualdade.
O que as sequências de bytes UTF-8 me dizem?
Exatamente o que será armazenado ou transmitido: ASCII é um byte, a maioria das extensões latinas dois, CJK três, emoji quatro. Se um sistema truncar no meio de uma sequência você recebe caracteres de substituição (�) — a visão de bytes mostra onde esses cortes cairiam.
Ferramentas relacionadas