Normaliseur Unicode NFD
Le mot café, écrit avec un seul é, ressort en cinq points de code : c, a, f, e et un accent aigu combinant. Chaque lettre précomposée est séparée en base et signes, et deux textes identiques à l'œil deviennent égaux une fois en NFD. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- café
- Résultat
- café
- Forme
- NFD
- Longueur (in)
- 4
- Longueur de sortie
- 5
La forme de normalisation Unicode D, ou NFD, réécrit une chaîne de sorte que chaque caractère précomposé s'étende en un caractère de base suivi des marques combinantes qui définissent son apparence. Un café avec un e aigu précomposé devient la séquence de cinq points de code c-a-f-e plus accent aigu combinant ; les syllabes hangul se scindent en jamo ; Å devient A plus un anneau combinant. Cette capacité prend un champ texte, applique l'algorithme NFD de la plateforme selon le Unicode Standard Annex 15, et renvoie la chaîne normalisée avec des statistiques de longueur et un indicateur de changement.
Ce que fait réellement la décomposition canonique NFD
Unicode stocke de nombreuses lettres accentuées de deux façons : comme un unique point de code précomposé, par exemple U+00E9 pour le e minuscule latin avec aigu, ou comme la lettre de base U+0065 suivie de l'accent aigu combinant U+0301. Les deux séquences se rendent de façon identique, mais ce sont des séquences d'octets différentes, elles cassent l'égalité de chaînes et peuvent surprendre les contrôles de longueur, les expressions régulières et les contraintes d'unicité en base de données.
La Normalization Form D, définie dans le Unicode Standard Annex 15, applique la décomposition canonique : tout caractère possédant un mappage de décomposition canonique est remplacé par ce mappage, et les marques combinantes sont ordonnées selon leur classe de combinaison afin que les séquences équivalentes deviennent identiques. NFD ne recompose pas ensuite ; cette recomposition est NFC. NFD n'applique pas non plus les mappages de compatibilité, de sorte qu'une ligature comme fi ou un chiffre pleine chasse reste tel quel — la décomposition de compatibilité relève de NFKD et NFKC.
Les syllabes hangul reçoivent une décomposition algorithmique spéciale en jamo initial, voyelle et final, c'est pourquoi un court mot coréen peut croître plusieurs fois en longueur de points de code tout en restant le même texte linguistique. Comme la table de mappage et l'ordre des marques sont fixés par la version Unicode du runtime, la même entrée produit toujours la même chaîne NFD sur un moteur donné.
Où NFD apparaît dans le travail d'ingénierie réel
Les pipelines de recherche et d'autocomplétion retirent souvent les diacritiques après NFD pour que cafe corresponde à café sans table d'accents manuscrite par langue. Les générateurs d'identifiants et de slugs décomposent d'abord, puis suppriment les marques combinantes, produisant des clés stables de type ASCII à partir de titres destinés à l'utilisateur. Le QA de localisation compare deux exports qui se ressemblent à l'écran mais échouent aux tests d'égalité tant que les deux côtés ne sont pas forcés en NFD.
Les ingénieurs de polices et de shaping examinent les séquences décomposées pour déboguer l'attachement des marques et la substitution de glyphes. Les relecteurs de sécurité normalisent noms d'utilisateur et étiquettes de domaine avant les contrôles de listes d'autorisation afin que des homographes précomposés et décomposés ne contournent pas un filtre qui n'a listé qu'une forme. Les tâches de migration convertissent des corpus hérités denses en NFC vers NFD lorsqu'un système aval documente NFD comme forme de stockage.
Les cours de programmation enseignent l'encodage en montrant qu'un caractère visible peut devenir deux points de code après NFD, et une page dédiée au normaliseur sert cette intention de recherche mieux qu'en l'enterrant sous des convertisseurs généraux de points de code Unicode ou des outils Base64.
Préférez un outil NFC ou NFKC séparé lorsque vous avez besoin de composition ou de pliage de compatibilité ; cette page s'adresse à ceux qui ont spécifiquement besoin de la décomposition canonique Unicode NFD et d'une chaîne normalisée déterministe pour les tests et les pipelines.
Cas d’usage
Clés de recherche sensibles aux diacritiques
Décomposez titres de produits et requêtes utilisateur en NFD, puis retirez les marques combinantes pour construire des index de recherche et d'autocomplétion insensibles aux accents.
Normalisation des noms d'utilisateur et étiquettes
Normalisez noms de compte et étiquettes avant les contrôles de liste d'autorisation ou d'unicité pour que les formes précomposées et décomposées ne divergent pas.
Questions fréquentes
Qu'est-ce que Unicode NFD ?
NFD est la Normalization Form D du Unicode Standard Annex 15. Elle applique la décomposition canonique pour que les caractères précomposés deviennent un caractère de base plus des marques combinantes, sans recomposition en NFC.
En quoi NFD diffère-t-il de NFC ou NFKD ?
NFC décompose puis recompose en formes précomposées lorsque c'est possible. NFKD et NFKC appliquent aussi des mappages de compatibilité (ligatures, formes pleine chasse). Cet outil n'applique que la décomposition canonique NFD.
Que se passe-t-il si text est manquant ou invalide ?
Text manquant, objets non chaîne, nombres non finis et entrée trop longue sont rejetés. Les échecs de validation ne sont pas facturés.
Le hangul est-il décomposé ?
Oui. Les syllabes hangul précomposées sont décomposées algorithmiquement en jamo sous NFD, de sorte qu'un court texte coréen peut croître en longueur de points de code tout en restant le même texte.
NFD peut-il m'aider à supprimer les accents ?
C'est la première étape : après NFD, chaque accent devient un signe séparé placé après sa lettre, que vos outils de recherche ou de création d'identifiants peuvent ensuite retirer pour que cafe trouve café. Cet outil décompose seulement, il ne supprime pas les signes.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/enc/unicode-nfd \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"café"}'const res = await fetch("https://api.kit.forhosting.com/enc/unicode-nfd", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "café"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/unicode-nfd",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "café"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/unicode-nfd", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"café"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"café"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/unicode-nfd", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "café"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.unicode_nfd",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Une entrée invalide ou manquante échoue immédiatement avec invalid_input afin qu'un mauvais payload n'invente jamais une chaîne erronée en silence.
Ce que fait réellement la décomposition canonique NFD
Cette capacité utilise la méthode JavaScript String.prototype.normalize avec la forme NFD, disponible dans les Workers et navigateurs modernes, et elle est déterministe : aucun appel réseau, aucune graine aléatoire ni horodatage d'horloge ne participe au résultat.
Comment appeler l'API et lire la réponse
Les chaînes vides sont valides et renvoient un résultat NFD vide avec changed à false. Un exemple classique avec café passe de quatre échelles à cinq et signale changed true avec une marque combinante. L'ASCII simple comme Hello reste identique avec changed false. Une validation en échec ne consomme pas le solde prépayé. Envoyez un objet JSON avec un champ chaîne obligatoire nommé text. Les alias input, value, data, s, str et string sont acceptés lorsque text est omis, afin que les clients ad hoc fonctionnent encore. Les nombres finis et les booléens sont convertis en chaîne ; les objets, tableaux, text nul, NaN et Infinity sont rejetés avec invalid_input et un message clair en anglais. Les chaînes plus longues que le maximum documenté de soixante-cinq mille cinq cent trente-six unités de code UTF-16 sont rejetées pour qu'une seule requête ne monopolise pas un Worker. En cas de succès, la réponse renvoie le text d'origine, place result sur la chaîne normalisée NFD, form sur la constante NFD, changed selon que result diffère de text sous l'inégalité ordinaire des chaînes JavaScript, length_in et length_out sur les comptes d'échelles Unicode avant et après normalisation, code_units_in et code_units_out sur les longueurs UTF-16, combining_marks sur un décompte des points de code de marques combinantes courantes dans le résultat, et standard sur une courte étiquette UAX #15. Le tarif des appels API réussis est la base publiée de $0.002 par élément avec l'unité item.
Où NFD apparaît dans le travail d'ingénierie réel
Comme cette capacité est un moteur parse pur, le prix API est la base publiée de $0.002 par élément réussi et une validation en échec ne consomme pas le solde.
Cas d'intégration
Tests golden stables entre plateformes
Forcez les chaînes de fixture en NFD afin que les assertions d'égalité passent que les données soient arrivées précomposées ou déjà décomposées.
Questions techniques
Combien cela coûte-t-il ?
L'outil navigateur est gratuit et s'exécute localement. Les requêtes API utilisent le solde prépayé KIT à $0.002 par élément réussi ; une entrée invalide n'est pas facturée.