Normalizador Unicode
A mesma string visível pode ser armazenada como sequências de bytes diferentes dependendo de o acento existir como um único ponto de código ou como uma letra mais um sinal combinante. Este normalizador converte texto entre as quatro formas de normalização Unicode (NFC, NFD, NFKC, NFKD) para que suas strings sejam comparadas corretamente em bancos de dados, índices de busca, scripts de deduplicação e correspondências de regex.
Como normalizar texto Unicode
-
1
Cole sua entrada
Insira a string: letras acentuadas, texto CJK, ligaduras, qualquer coisa que pareça inconsistente.
-
2
Escolha uma forma
Escolha NFC (composta, a forma habitual da web), NFD (decomposta), NFKC (composta de compatibilidade) ou NFKD (decomposta de compatibilidade).
-
3
Compare as contagens
A ferramenta informa o número de caracteres (pontos de código) e o comprimento em bytes antes e depois, para que você veja se a forma encurtou ou alongou a string.
-
4
Copie a saída normalizada
Use o resultado no seu banco de dados, na carga útil da API, no gerador de slugs ou em uma fixture de teste.
As quatro formas e quando usar cada uma
A normalização Unicode é definida pelo anexo padrão UAX #15. As quatro formas diferem em dois eixos: canônica versus compatibilidade, e composta versus decomposta.
Referência lado a lado
| Forma | Composição | Mapeamento | Quando usar |
|---|---|---|---|
| NFC | Composta | Apenas canônico | Padrão para conteúdo web, bancos de dados, nomes de arquivo |
| NFD | Decomposta | Apenas canônico | Processamento de texto que remove acentos por caractere |
| NFKC | Composta | Inclui compat. | Busca, identificadores, filtros de spam, dobramento de exibição |
| NFKD | Decomposta | Inclui compat. | Normalização agressiva antes de remover diacríticos |
As formas canônicas preservam o significado
Digite é e alterne as formas. A NFC informa 1 caractere e 2 bytes (o único ponto de código U+00E9), enquanto a NFD informa 2 caracteres e 3 bytes (um e simples seguido de um acento agudo combinante, U+0301). Os dois parecem idênticos na tela, mas são sequências de bytes diferentes, e é exatamente essa divergência que a normalização corrige. As formas canônicas apenas reordenam os bytes, então é em qualquer das formas sempre significa a letra e com acento agudo.
O que “compatibilidade” realmente muda
As formas K (NFKC, NFKD) também reescrevem caracteres que parecem aparentados, mas carregam uma formatação diferente. Isso tem perda: você não consegue recuperar o original. Por exemplo:
fi(U+FB01, ligadura latina minúscula fi) virafi(duas letras)①(U+2460, dígito um circunscrito) vira1㌀(U+3300, o quadrado CJK “apaato”) viraアパート- O
Ade largura total (U+FF21) viraA
Isso é poderoso para busca e deduplicação, mas destrutivo para a tipografia, então recorra às formas K apenas quando a fidelidade visual não importar.
Uma regra prática
- Armazene o conteúdo do usuário em NFC.
- Compare identificadores em NFC para que
caféescrito como um único ponto de código ecaféescrito comoe+ U+0301 coincidam; suba para NFKC quando também precisar quefiefi, ou oAde largura total eA, sejam comparados como iguais, como fazem as regras de identificadores do UAX #31. - Gere slugs sem acentos normalizando para NFD e removendo o bloco de sinais combinantes U+0300 a U+036F.
Perguntas frequentes
Geralmente isso significa que sua entrada já estava na forma de destino. Cole texto que misture fontes (um nome de arquivo de Mac, um trecho copiado de PDF, uma linha de um banco de dados antigo) e será muito mais provável ver as contagens de caracteres e bytes mudarem.
Para URLs de exibição, NFC. Para slugs em que você quer ASCII puro, normalize para NFD, remova os sinais combinantes com um regex em U+0300 a U+036F e depois deixe tudo em minúsculas. NFKD é uma alternativa quando você também quer reduzir ligaduras e dígitos circunscritos.
As formas canônicas (NFC, NFD) nunca mudam o significado, apenas reordenam bytes. As formas de compatibilidade (NFKC, NFKD) mudam sim: as ligaduras se separam, as letras de largura total se reduzem e os expoentes se achatam. Use-as apenas quando é isso o que você deseja.
A normalização é executada no nosso servidor pela classe Normalizer do PHP e o resultado volta na mesma requisição; seu texto não é armazenado. Registramos apenas um evento anônimo indicando qual forma foi aplicada, nunca o conteúdo em si.
Ferramentas relacionadas
Gerador de nomes de cidades
Gere nomes fictícios de cidades, vilas, aldeias e capitais para worldbuilding, mapas, jogos, histórias e dados fictícios, em um idioma real ou em um estilo inventado.
Gerador de Texto Negrito Itálico
Transforme texto comum em caracteres Unicode negrito itálico. Pronto para colar em bios do Instagram, Twitter/X, LinkedIn e Discord onde markdown não é suportado.
Gerador de anagramas
Digite uma palavra curta e veja cada reorganização única das letras, sem permutações duplicadas e com limite de resultados ajustável.
Gerador de Texto Rolante
Crie manchetes animadas rolantes com velocidade, tamanho de fonte e cores ajustáveis. Visualize ao vivo um ticker marquee CSS ou uma barra de anúncio no seu navegador.
Gerador de Fonte do Instagram
Gere "fontes" Unicode (negrito, itálico, script, monoespaçado, fraktur) que podem ser coladas diretamente na sua bio, nome, legendas e comentários do Instagram.
Gerador de Texto Amaldiçoado
Transforme texto normal em letras amaldiçoadas, estilo Zalgo, empilhadas com marcas combinatórias Unicode. Copie o caos para chats, legendas ou memes.
Ferramenta disponível em outros idiomas
- Unicode正規化ツール [JA]
- Unicode-normaliseerder [NL]
- Normalizador Unicode [ES]
- Bộ chuẩn hóa Unicode [VI]
- Penormal Unicode [ID]
- Unicode-Normalisierer [DE]
- Unicode-normaliserare [SV]
- مُطبِّع Unicode [AR]
- Normalizator Unicode [PL]
- 유니코드 정규화기 [KO]
- ตัวปรับข้อความให้เป็นมาตรฐาน Unicode [TH]
- Normaliseur Unicode [FR]
- Unicode Normalizer [EN]
- Normalizzatore Unicode [IT]
- Нормализатор Unicode [RU]
- Unicode Normalleştirici [TR]
- Unicode 规范化工具 [ZH]