1001Ferramentas
🧬 Texto

Normalizador Unicode (NFC/NFD)

Aplica normalização Unicode NFC, NFD, NFKC ou NFKD em um texto. Mostra a contagem de codepoints antes e depois.

Antes
Depois

Quando dois textos iguais não batem

A busca no banco não encontra 'ação', o filtro da planilha ignora uma linha que está visivelmente lá, ou uma comparação de strings dá falso mesmo com os dois lados idênticos na tela. Quase sempre a causa é a mesma: o acento pode estar gravado como um único caractere ou como a letra seguida de um acento combinante. Cole o texto aqui e veja as duas versões lado a lado, com a contagem antes e depois.

São quatro formas. NFC compõe (é vira um codepoint só), NFD decompõe (e mais o acento, dois codepoints). NFKC e NFKD fazem isso e ainda aplicam o mapeamento de compatibilidade: a ligadura de fi vira duas letras, o expoente ² vira 2, o A de largura fixa vira A. Esse segundo grupo é irreversível. Os contadores mostram unidades UTF-16 (o que o .length do JavaScript devolve) e codepoints, que é onde a diferença aparece.

Para gravar e comparar em banco, NFC é a escolha padrão na web. NFD serve quando o passo seguinte é remover diacríticos. Pense duas vezes antes de usar NFK em texto técnico: m² virando m2 e ½ virando 1⁄2 muda o significado do dado. Isto aqui não é um removedor de acentos, os acentos continuam lá em todas as formas. O texto é normalizado no próprio navegador, nada é enviado a servidor.

Perguntas frequentes

Qual forma devo usar para salvar no banco de dados?
NFC, na maioria dos casos. É a forma recomendada para conteúdo web e a que deixa a comparação de strings previsível.
Por que o texto parece igual mas a contagem de codepoints muda?
Porque um acento combinante ocupa um codepoint próprio. Em NFD, 'café' tem 5 codepoints e em NFC tem 4, com a mesma aparência na tela.
NFKC apaga os acentos?
Não. Ele mantém letras acentuadas e troca apenas caracteres de compatibilidade, como ligaduras, expoentes, frações e caracteres de largura fixa.

Ferramentas Relacionadas