ForHosting KIT · Strumenti per sviluppatori

Normalizzatore Unicode NFD

La parola café, scritta con una sola é, esce come cinque code point: c, a, f, e e un accento acuto combinante. Ogni lettera precomposta viene separata in base e segni, così due testi che sembrano identici risultano uguali quando sono entrambi in NFD. Gratis nel suo browser.

  • Gratis
  • Funziona nel suo browser
  • Senza registrazione
  • I suoi dati restano sul dispositivo
Usalo da WebAPIEmailTelegramApp presto
Se inserisce
Testo
café
Ottiene
Risultato
café
Forma
NFD
Lunghezza (in)
4
Lunghezza in uscita
5

La forma di normalizzazione Unicode D, o NFD, riscrive una stringa in modo che ogni carattere precomposto si espanda in un carattere base seguito dai segni combinanti che ne definiscono l'aspetto. Un café con e-acuta precomposta diventa la sequenza di cinque code point c-a-f-e più accento acuto combinante; le sillabe hangul si dividono in jamo; Å diventa A più un anello combinante. Questa capacità riceve un campo di testo, applica l'algoritmo NFD della piattaforma secondo lo Unicode Standard Annex 15 e restituisce la stringa normalizzata insieme a statistiche di lunghezza e a un flag di modifica.

Cosa fa davvero la scomposizione canonica NFD

Unicode memorizza molte lettere accentate in due modi: come un unico code point precomposto, ad esempio U+00E9 per la e minuscola latina con acuto, oppure come la lettera base U+0065 seguita dall'accento acuto combinante U+0301. Entrambe le sequenze appaiono uguali a schermo, ma sono sequenze di byte diverse, rompono l'uguaglianza delle stringhe e possono sorprendere controlli di lunghezza, espressioni regolari e vincoli di unicità nei database.

La Normalization Form D, definita nello Unicode Standard Annex 15, applica la scomposizione canonica: ogni carattere con un mapping di scomposizione canonica viene sostituito da tale mapping e i segni combinanti sono ordinati per classe di combinazione così che sequenze equivalenti diventino identiche. NFD non ricompone in seguito; quel passo di ricomposizione è NFC. NFD non applica nemmeno i mapping di compatibilità, quindi una legatura come fi o una cifra a larghezza piena resta com'è: la scomposizione di compatibilità spetta a NFKD e NFKC.

Le sillabe hangul ricevono una scomposizione algoritmica speciale in jamo iniziale, vocale e finale, ed è per questo che una breve parola coreana può crescere di diverse volte in lunghezza di code point restando lo stesso testo linguistico. Poiché la tabella di mapping e l'ordine dei segni sono fissati dalla versione Unicode del runtime, lo stesso input produce sempre la stessa stringa NFD su un dato motore.

Dove NFD compare nel lavoro di ingegneria reale

Le pipeline di ricerca e autocompletamento spesso rimuovono i diacritici dopo NFD affinché cafe corrisponda a café senza mantenere una tabella di accenti scritta a mano per ogni lingua. I generatori di identificatori e slug scompongono prima e poi eliminano i segni combinanti, producendo chiavi stabili di tipo ASCII da titoli orientati all'utente. Il QA di localizzazione confronta due esportazioni che sembrano uguali a schermo ma falliscono i test di uguaglianza finché entrambi i lati non vengono forzati in NFD.

Ingegneri di font e di shaping ispezionano sequenze scomposte mentre eseguono il debug dell'ancoraggio dei segni e della sostituzione dei glifi. I revisori di sicurezza normalizzano nomi utente ed etichette di dominio prima dei controlli su allow-list affinché lookalike precomposti e scomposti non eludano un filtro che ha elencato una sola forma. I job di migrazione dati convertono corpus legacy densi di NFC in NFD quando un sistema a valle documenta NFD come forma di archiviazione.

I corsi di programmazione insegnano l'encoding mostrando che un carattere visibile può diventare due code point dopo NFD, e una landing dedicata al normalizzatore serve meglio tale intento di ricerca che sepolto sotto convertitori generali di code point Unicode o strumenti Base64. Preferisca uno strumento NFC o NFKC separato quando serve composizione o piegatura di compatibilità; questa pagina si rivolge a chi ha specificamente bisogno della scomposizione canonica Unicode NFD e di una stringa normalizzata deterministica da fidarsi in test e pipeline.

Chiavi di ricerca consapevoli dei diacritici

Scomponga titoli di prodotto e query utente in NFD, poi rimuova i segni combinanti per costruire indici di ricerca e autocompletamento insensibili agli accenti.

Normalizzazione di nomi utente ed etichette

Normalizzi nomi account ed etichette prima di controlli di allow-list o unicità affinché le forme precomposte e scomposte non divergano.

Cos'è Unicode NFD?

NFD è la Normalization Form D dello Unicode Standard Annex 15. Applica la scomposizione canonica affinché i caratteri precomposti diventino carattere base più segni combinanti, senza ricomporli in NFC.

In che modo NFD differisce da NFC o NFKD?

NFC scompone e poi ricompone in forme precomposte quando possibile. NFKD e NFKC applicano anche mapping di compatibilità (legature, forme a larghezza piena). Questo strumento applica solo la scomposizione canonica NFD.

Cosa succede se text manca o non è valido?

Text assente, oggetti non stringa, numeri non finiti e input troppo lunghi vengono rifiutati. I fallimenti di validazione non sono addebitati.

L'hangul viene scomposto?

Sì. Le sillabe hangul precomposte vengono scomposte algoritmicamente in jamo sotto NFD, quindi un breve testo coreano può crescere in lunghezza di code point restando lo stesso testo.

Quanto costa?

Lo strumento del browser è gratuito e viene eseguito in locale.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

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

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

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"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Un input mancante o non valido fallisce subito con invalid_input così un payload errato non inventa in silenzio una stringa sbagliata.

Cosa fa davvero la scomposizione canonica NFD

Questa capacità usa il metodo JavaScript String.prototype.normalize con la forma NFD, disponibile nei Worker e nei browser moderni, ed è deterministica: nessuna chiamata di rete, nessun seme casuale e nessun timestamp di orologio partecipano al risultato.

Come chiamare l'API e leggere la risposta

Le stringhe vuote sono valide e restituiscono un risultato NFD vuoto con changed impostato a false. Un esempio classico con café cresce da quattro scalari a cinque e riporta changed true con un segno combinante. ASCII semplice come Hello resta identico con changed false. La validazione fallita non consuma il saldo prepagato. Invii un oggetto JSON con un campo stringa obbligatorio denominato text. Gli alias input, value, data, s, str e string sono accettati quando text è omesso, così i client ad hoc funzionano ancora. Numeri finiti e booleani vengono coerciti nella forma stringa; oggetti, array, text nullo, NaN e Infinity sono rifiutati con invalid_input e un messaggio chiaro in inglese. Le stringhe più lunghe del massimo documentato di sessantacinquemilacinquecentotrentasei unità di codice UTF-16 vengono rifiutate affinché una singola richiesta non monopolizzi un Worker. In caso di successo la risposta ripete il text originale, imposta result sulla stringa normalizzata NFD, form sulla costante NFD, changed su se result differisce da text sotto la disuguaglianza ordinaria delle stringhe JavaScript, length_in e length_out sui conteggi di scalari Unicode prima e dopo la normalizzazione, code_units_in e code_units_out sulle lunghezze UTF-16, combining_marks su un conteggio dei code point di segni combinanti comuni nel risultato, e standard su una breve etichetta UAX #15. Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento con unità item.

Dove NFD compare nel lavoro di ingegneria reale

Poiché questa capacità è un motore parse puro, il prezzo API è la base pubblicata di $0.002 per elemento riuscito e la validazione fallita non consuma saldo.

Test golden stabili tra piattaforme

Forzi le stringhe di fixture in NFD affinché le asserzioni di uguaglianza passino sia se i dati sono arrivati precomposti sia se erano già scomposti.

Leggi la documentazione completa del KIT →