O que é normalização Unicode?

Unicode define múltiplas formas de representar o mesmo caractere visível. Por exemplo, o caractere "é" pode ser armazenado como um único ponto de código pré-composto (U+00E9) ou como a letra "e" seguida por um acento agudo combinado (U+0065 U+0301). Ambos são renderizados de forma idêntica, mas são diferentes byte a byte, o que causa problemas para comparação de strings, busca e processamento de texto.

Normalização Unicode é o processo de converter texto para uma representação canônica, de modo que strings equivalentes se tornem idênticas. O Padrão Unicode define quatro formas de normalização:

  • NFC (Decomposição Canônica, seguida por Composição Canônica): Forma pré-composta; mais compacta, amplamente usada na web e na maioria dos sistemas operacionais.
  • NFD (Decomposição Canônica): Forma totalmente decomposta; cada caractere é dividido em letra base mais marcas combinadas.
  • NFKC (Decomposição de Compatibilidade, seguida por Composição Canônica): Como NFC, mas também reduz caracteres de compatibilidade (por exemplo, ligaduras, sobrescritos, variantes de largura completa) para seus equivalentes canônicos.
  • NFKD (Decomposição de Compatibilidade): Como NFD, mas também aplica decomposição de compatibilidade.

Descrição da ferramenta

Esta ferramenta normaliza texto Unicode de uma forma de normalização para outra. Selecione as formas de origem e destino, cole seu texto, e a saída convertida aparece instantaneamente.

Recursos

  • Todas as quatro formas de normalização: Suporta NFC, NFD, NFKC e NFKD como origem e destino.
  • Conversão bidirecional: Alterne entre qualquer combinação de formas livremente.
  • Saída em tempo real: O texto é normalizado instantaneamente conforme você digita ou cola.
  • Funciona com qualquer script Unicode: Funciona com Latin, CJK, árabe, cirílico e qualquer outro texto codificado em Unicode.

Como funciona

A ferramenta aplica o método padrão JavaScript String.prototype.normalize() com a forma de destino selecionada. Esta é uma implementação totalmente compatível com a especificação de normalização Unicode conforme definido no Unicode Standard Annex #15.

Casos de uso

  • Correções de comparação de strings: Normalize o texto antes de compará-lo ou indexá-lo para garantir que strings visualmente idênticas correspondam corretamente.
  • Consistência de busca e banco de dados: Padronize a entrada do usuário para uma única forma (tipicamente NFC) antes de armazená-la em um banco de dados para evitar entradas duplicadas que diferem apenas na codificação.
  • Redução de compatibilidade: Use NFKC para colapsar ligaduras, sobrescritos e caracteres de largura completa em seus equivalentes padrão para indexação de busca ou processamento de linguagem natural.