Normalizzatore Unicode NFKD
file ① café diventa file 1 café con l'accento staccato: le legature si aprono in lettere separate, le cifre cerchiate diventano numeri normali e le lettere accentate si dividono in base e segno, senza ricomporre nulla dopo. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- file ① café
- Risultato
- file 1 café
- Forma
- NFKD
- Lunghezza dell'input
- 10
- Lunghezza del risultato
- 12
Il testo Unicode spesso codifica gli stessi caratteri astratti in più forme: una legatura, una lettera precomposta con accento, una cifra cerchiata o una base più segni combinanti. Motori di ricerca, database e filtri di sicurezza necessitano di una forma stabile affinché file e file coincidano, café e café risultino uguali dopo la scomposizione e ① non nasconda una cifra. La forma di normalizzazione Unicode KD (NFKD) applica la scomposizione di compatibilità: espande le legature, elimina differenze solo di presentazione e separa le sequenze combinanti senza ricomporle. Questa capacità accetta qualsiasi stringa, esegue l'algoritmo NFKD standard e restituisce il risultato normalizzato con statistiche di lunghezza e punti di codice, più un booleano che indica se qualcosa è cambiato.
Cosa fa NFKD e come differisce da NFC, NFD e NFKC
La forma di normalizzazione Unicode KD, definita nell'Annex 15 dello standard Unicode, è la scomposizione di compatibilità. A differenza di NFD, che applica solo scomposizioni canoniche come separare una é precomposta in e più accento acuto combinante, NFKD applica anche mappature di compatibilità che rimuovono distinzioni di formattazione e presentazione non essenziali per molte attività di corrispondenza. Legature come il carattere unico fi diventano le lettere f e i; la legatura doppia ff diventa f f; la tripla ffi diventa f f i.
Numeri cerchiati, cifre a larghezza piena, apici e caratteri di compatibilità simili si espandono nei corrispondenti semplici. Le sequenze combinanti canoniche restano in ordine scomposto, così café può diventare cafe seguito da un accento acuto combinante sulla e. NFKD non ricompone di proposito: quella ricomposizione spetta a NFKC.
Scelga NFKD quando desidera il massimo dispiegamento per indicizzazione, confronto fuzzy o rimozione di forme di presentazione prima di ulteriori elaborazioni. Scelga NFC quando preferisce una forma composta compatta per archiviazione e visualizzazione. L'implementazione usa il metodo nativo String normalize del linguaggio ospite, conforme a UAX 15 e pienamente deterministico sui moderni motori JavaScript.
Dove la normalizzazione Unicode NFKD compare nel lavoro reale
Sistemi di ricerca e catalogo normalizzano titoli di prodotto ed etichette visibili affinché la tipografia ricca di legature degli strumenti di design non crei chiavi duplicate: final e final collassano dopo NFKD. Gli ingegneri di localizzazione confrontano stringhe utente dopo la scomposizione di compatibilità cercando omografi confondibili o verificando che una forma di visualizzazione sia solo zucchero di presentazione su lettere semplici.
Le pipeline di sicurezza e identità spesso applicano NFKD o NFKC prima di hash o uguaglianza così grafie Unicode alternative dello stesso nome astratto non aggirino le allow list. I corsi di programmazione insegnano la codifica mostrando che un carattere visibile può mappare a più scalari dopo la scomposizione; una landing dedicata a NFKD serve meglio tale intento di ricerca che seppellirlo sotto Base64 o convertitori di code point. I desk di supporto incollano simboli strani dai ticket e necessitano di una forma dispiegata autorevole per la riproduzione in engineering.
Se serve elenchi U-plus di code point, entità HTML o riparazione mojibake UTF-8, li tratti come intenti e landing separati, senza sovraccaricare questa pagina del normalizzatore Unicode NFKD.
Casi d'uso
Ripiegamento chiavi per ricerca e catalogo
Normalizzi titoli ed etichette di prodotto con NFKD affinché legature e cifre cerchiate non creino chiavi di indice duplicate accanto agli equivalenti in testo semplice.
Confronto di identità e sicurezza
Scomponga per compatibilità nomi utente e token prima di uguaglianza o hash affinché le varianti di presentazione non aggirino filtri che si aspettano forme ASCII-friendly.
Domande frequenti
Che cos'è Unicode NFKD?
NFKD è la forma di normalizzazione KD dell'Annex 15 dello standard Unicode: scomposizione di compatibilità completa. Espande legature e caratteri di compatibilità e separa i segni combinanti, senza ricomporli.
In che modo NFKD differisce da NFKC?
Entrambe applicano la scomposizione di compatibilità. NFKC poi ricompone quando possibile in caratteri composti. Questo strumento restituisce solo NFKD (forma scomposta, senza ricomposizione).
file diventa file?
Sì. La legatura fi U+FB01 è un carattere di compatibilità; NFKD la mappa in f + i, quindi file si normalizza in file con changed true.
Quanto costa?
Lo strumento browser è gratuito e gira in locale.
Perché il risultato è più lungo del testo di partenza?
Perché ogni legatura diventa più lettere e ogni accento diventa un segno a sé. Nell'esempio file ① café i 10 code point in ingresso diventano 12 in uscita, anche se a schermo il testo sembra quasi uguale.
Strumenti correlati
Per sviluppatori — accesso via API
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.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/enc/unicode-nfkd \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"file ① café"}'const res = await fetch("https://api.kit.forhosting.com/enc/unicode-nfkd", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "file ① café"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/unicode-nfkd",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "file ① café"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/unicode-nfkd", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"file ① café"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"file ① café"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/unicode-nfkd", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "file ① café"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.unicode_nfkd",
"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.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
L'input non valido o assente fallisce con invalid_input così i payload errati non inventano testo. Lo strumento gratuito del browser e l'API a pagamento condividono lo stesso modulo puro, così demo, pipeline di localizzazione e webhook di produzione restano sempre allineati.
Cosa fa NFKD e come differisce da NFC, NFD e NFKC
Questo endpoint restituisce sempre form NFKD così i client non devono indovinare l'algoritmo.
Contratto di input, campi di risposta e comportamento degli errori
Le stringhe vuote sono valide e restituiscono un risultato NFKD vuoto con changed false. Le stringhe oltre sessantacinquemila cinquecentotrentasei unità di codice UTF-16 falliscono affinché un incolla incontrollato non esaurisca il worker. Invii un oggetto JSON con un campo stringa obbligatorio denominato text. Sono accettati gli alias input, value, s e data quando text manca, come negli strumenti di codifica correlati. Numeri e booleani sono convertiti nella forma decimale o in true o false; oggetti, array, null, NaN e Infinity sono rifiutati con invalid_input indicando il problema. In caso di successo il corpo ripete il text originale, fornisce result come stringa normalizzata NFKD, imposta form sulla costante NFKD, imposta changed a true quando result differisce da text, riporta input_length e result_length come conteggi di unità UTF-16, riporta input_code_points e result_code_points come conteggi di scalari Unicode per non contare male emoji e caratteri fuori BMP, e include una breve etichetta dello standard che punta a UAX 15. Esempio: la parola con legatura file diventa file con changed true e result_length maggiore perché un'unità è diventata quattro. text assente fallisce subito senza addebito. Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento; i fallimenti di validazione non consumano il saldo prepagato.
Dove la normalizzazione Unicode NFKD compare nel lavoro 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.
Casi di integrazione
Fixture di localizzazione e didattica
Generi stringhe scomposte stabili per test golden, copertura glifi e demo in aula delle mappature di compatibilità UAX #15.
Domande tecniche
Cosa succede con input non valido?
La richiesta fallisce con invalid_input. text assente, oggetti non stringa, numeri non finiti e stringhe troppo lunghe sono rifiutati con un messaggio chiaro. I fallimenti di validazione non sono addebitati.