ForHosting KIT · Ferramentas para dev

Normalizador Unicode NFD

A palavra café, escrita com um único é, sai como cinco code points: c, a, f, e e um acento agudo combinante. Cada letra pré-composta é separada em base e marcas, e dois textos que parecem iguais passam a coincidir quando ambos estão em NFD. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Texto
café
Você obtém
Resultado
café
Forma
NFD
Comprimento (in)
4
Comprimento de saída
5

A forma de normalização Unicode D, ou NFD, reescreve uma string para que cada caractere pré-composto se expanda em um caractere base seguido das marcas combinantes que definem sua aparência. Um café com e-agudo pré-composto vira a sequência de cinco code points c-a-f-e mais acento agudo combinante; sílabas hangul se dividem em jamo; Å vira A mais um anel combinante. Esta capacidade recebe um campo de texto, aplica o algoritmo NFD da plataforma conforme o Unicode Standard Annex 15 e devolve a string normalizada junto com estatísticas de comprimento e um indicador de alteração.

O que a decomposição canônica NFD realmente faz

O Unicode armazena muitas letras acentuadas de duas formas: como um único code point pré-composto, por exemplo U+00E9 para o e minúsculo latino com agudo, ou como a letra base U+0065 seguida do acento agudo combinante U+0301. As duas sequências parecem iguais na tela, mas são sequências de bytes diferentes, quebram igualdade de strings e podem surpreender checagens de comprimento, regexes e restrições de unicidade em bancos de dados.

A Normalization Form D, definida no Unicode Standard Annex 15, aplica decomposição canônica: todo caractere com mapeamento de decomposição canônica é substituído por esse mapeamento, e as marcas combinantes são ordenadas pela classe de combinação para que sequências equivalentes fiquem idênticas. NFD não recompõe depois; esse passo de recomposição é NFC. NFD também não aplica mapeamentos de compatibilidade, então uma ligadura como fi ou um dígito fullwidth permanece como está — a decomposição de compatibilidade pertence a NFKD e NFKC.

Sílabas hangul recebem decomposição algorítmica especial em jamo inicial, vogal e final, por isso uma palavra coreana curta pode crescer várias vezes em comprimento de code points sem deixar de ser o mesmo texto linguístico. Como a tabela de mapeamento e a ordem das marcas são fixadas pela versão Unicode do runtime, a mesma entrada sempre produz a mesma string NFD em um motor dado.

Onde NFD aparece no trabalho real de engenharia

Pipelines de busca e autocomplete costumam remover diacríticos após NFD para que cafe case com café sem manter uma tabela de acentos escrita à mão para cada idioma. Geradores de identificadores e slugs decompõem primeiro e depois removem marcas combinantes, produzindo chaves estáveis estilo ASCII a partir de títulos orientados ao usuário. O QA de localização compara duas exportações que parecem iguais na tela, mas falham em testes de igualdade até forçar os dois lados para NFD.

Engenheiros de fontes e de shaping inspecionam sequências decompostas ao depurar ancoragem de marcas e substituição de glifos. Revisores de segurança normalizam nomes de usuário e rótulos de domínio antes de checagens de allow-list para que lookalikes pré-compostos e decompostos não contornem um filtro que listou só uma forma. Jobs de migração de dados convertem corpora legados densos em NFC para NFD quando um sistema a jusante documenta NFD como forma de armazenamento.

Cursos de programação ensinam encoding mostrando que um caractere visível pode virar dois code points após NFD, e uma landing dedicada ao normalizador atende essa intenção de busca melhor do que enterrá-la sob conversores gerais de code points Unicode ou ferramentas Base64. Prefira uma ferramenta NFC ou NFKC separada quando precisar de composição ou dobramento de compatibilidade; esta página atende quem precisa especificamente da decomposição canônica Unicode NFD e de uma string normalizada determinística para confiar em testes e pipelines.

Chaves de busca cientes de diacríticos

Decomponha títulos de produto e consultas do usuário para NFD e depois remova marcas combinantes para montar índices de busca e autocomplete insensíveis a acentos.

Normalização de nomes de usuário e rótulos

Normalize nomes de conta e rótulos antes de checagens de allow-list ou unicidade para que formas pré-compostas e decompostas não divirjam.

O que é Unicode NFD?

NFD é a Normalization Form D do Unicode Standard Annex 15. Aplica decomposição canônica para que caracteres pré-compostos virem caractere base mais marcas combinantes, sem recompô-los em NFC.

Em que NFD difere de NFC ou NFKD?

NFC decompõe e depois recompõe para formas pré-compostas quando possível. NFKD e NFKC também aplicam mapeamentos de compatibilidade (ligaduras, formas fullwidth). Esta ferramenta aplica apenas a decomposição canônica NFD.

O que acontece se text estiver ausente ou inválido?

Text ausente, objetos que não são string, números não finitos e entrada grande demais são rejeitados. Falhas de validação não são cobradas.

O hangul é decomposto?

Sim. Sílabas hangul pré-compostas são decompostas algoritmicamente em jamo sob NFD, então texto coreano curto pode crescer em comprimento de code points sem deixar de ser o mesmo texto.

Quanto custa?

A ferramenta do navegador é gratuita e roda localmente.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/enc/unicode-nfd

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/enc/unicode-nfd \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"café"}'
{
  "text": "café"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.unicode_nfd",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Entrada inválida ou ausente falha de imediato com invalid_input para que payloads ruins não inventem uma string errada em silêncio.

O que a decomposição canônica NFD realmente faz

Esta capacidade usa o método JavaScript String.prototype.normalize com a forma NFD, disponível em Workers e navegadores modernos, e é determinística: não participam chamadas de rede, sementes aleatórias nem carimbos de relógio.

Como chamar a API e ler a resposta

Strings vazias são válidas e devolvem resultado NFD vazio com changed definido como false. Um exemplo clássico com café cresce de quatro escalares para cinco e reporta changed true com uma marca combinante. ASCII simples como Hello permanece idêntico com changed false. Validação falha não consome saldo pré-pago. Envie um objeto JSON com um campo string obrigatório chamado text. Os aliases input, value, data, s, str e string são aceitos quando text é omitido, para que clientes ad hoc ainda funcionem. Números finitos e booleanos são convertidos para a forma string; objetos, arrays, text nulo, NaN e Infinity são rejeitados com invalid_input e uma mensagem clara em inglês. Strings maiores que o máximo documentado de sessenta e cinco mil quinhentos e trinta e seis unidades de código UTF-16 são rejeitadas para que uma única solicitação não monopolize um Worker. Em caso de sucesso a resposta ecoa o text original, define result como a string normalizada NFD, form como a constante NFD, changed como se result difere de text sob a desigualdade comum de strings em JavaScript, length_in e length_out como contagens de escalares Unicode antes e depois da normalização, code_units_in e code_units_out como os comprimentos UTF-16, combining_marks como uma contagem de code points de marcas combinantes comuns no resultado, e standard como um rótulo curto de UAX #15. O preço das chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item com unidade item.

Onde NFD aparece no trabalho real de engenharia

Como esta capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.

Testes golden estáveis entre plataformas

Force strings de fixture para NFD para que asserções de igualdade passem tanto se os dados chegaram pré-compostos quanto se já estavam decompostos.

Ver a documentação completa do KIT →