Unicode-NFKC-Normalisierer
Aus file ㎞ ① wird file km 1: Ligaturen, Vollbreitenbuchstaben, eingekreiste Ziffern und andere Stilvarianten werden zu schlichtem Text, danach werden Akzente wieder zusammengesetzt, sodass Kopien desselben Namens bei der Suche übereinstimmen. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- file ㎞ ①
- Ergebnis
- file km 1
- Form
- NFKC
- Eingabelänge
- 7
- Ausgabelänge
- 9
Dieser Unicode-NFKC-Normalisierer nimmt eine beliebige Unicode-Zeichenkette und liefert das Ergebnis in Normalization Form KC: Kompatibilitätszerlegung gefolgt von kanonischer Komposition gemäß Unicode Standard Annex 15. Dieser Weg faltet Präsentationsformen, die im Speicher unterschiedlich aussehen, aber für Suche, Indexierung und Identitätsprüfungen übereinstimmen müssen: fi-Ligaturen werden zu einfachem f und i, lateinische Vollbreitenbuchstaben zu ASCII A–Z, eingekreiste Ziffern zu gewöhnlichen Zahlen, Fraktur- und mathematisch gestylte Buchstaben kollabieren zur Basis, und Folgen wie e plus kombinierendes Akut werden zu einem vorcomposierten Zeichen, sofern eines existiert. Entwickler nutzen NFKC beim Aufbau von Deduplizierungsschlüsseln, URL-Slug-Pipelines und Katalogsuche, damit visuell äquivalente Kompatibilitätsvarianten nicht als getrennte Datensätze erscheinen. Nutzen Sie den kostenlosen Browser-Pfad, um Faltungen zu prüfen, bevor Sie denselben Algorithmus in die Automatisierung einbinden.
Was NFKC leistet und wie es sich von NFC unterscheidet
Unicode definiert vier Normalisierungsformen. NFC und NFD arbeiten nur mit kanonischer Äquivalenz: Sie rekomponieren oder zerlegen Zeichen, die der Standard als dasselbe abstrakte Zeichen behandelt, etwa vorcomposiertes é gegenüber e plus kombinierendem Akut. NFKC und NFKD gehen weiter, indem sie zuerst Kompatibilitätsabbildungen anwenden.
Diese Abbildungen verwerfen bewusst Präsentationsunterschiede, die für Typografie relevant sind, nicht aber für Abgleich: die fi-Ligatur mit einem Codepunkt wird zu f und i; Vollbreitenziffern und lateinische Buchstaben werden auf ihre Halbbreiten-ASCII-Gegenstücke abgebildet; Hoch- und Tiefstellungen falten zu gewöhnlichen Ziffern; Brüche expandieren zu Ziffernfolgen mit Bruchstrich; und viele umschlossene oder gestylte Buchstabenformen reduzieren sich zu einer einfacheren Basis. Nach dieser Kompatibilitätszerlegung führt NFKC denselben Kompositionsschritt wie NFC aus, sodass die endgültige Zeichenkette kompatibilitätsgefaltet und kanonisch komponiert ist.
Wählen Sie NFC, wenn Sie Ligaturen und Vollbreitenstil als eigene Glyphen für Anzeigetreue erhalten müssen. Wählen Sie NFKC, wenn Gleichheit, Suche und Hashing diese Varianten als denselben Text behandeln sollen. Diese Fähigkeit wendet stets NFKC an und kennzeichnet die Form in der Antwort, damit Clients den Algorithmus nicht erraten.
Wo ein NFKC-Normalisierer in echten Pipelines Nutzen stiftet
Such- und Katalogsysteme normalisieren Produkttitel und vom Nutzer eingegebene Namen mit NFKC vor der Indexierung, damit eine Vollbreiten-Marke und ihr ASCII-Zwilling auf denselben Token fallen. Content-Pipelines, die URL-Slugs erzeugen, wenden zuerst NFKC an, damit Ligaturen und Kompatibilitätssymbole später keine undurchsichtigen Percent-Encoding-Überraschungen erzeugen. Datenqualitätsjobs vergleichen Datensätze nach NFKC, um Beinahe-Duplikate zu finden, die sich nur durch gestylte Unicode-Varianten aus PDFs oder Office-Dokumenten unterscheiden.
Sicherheits- und Identitätsprüfungen normalisieren manchmal Benutzernamen oder Labels mit NFKC vor dem Gleichheitstest und reduzieren so ähnliche Kompatibilitätsformen, die keine echten Homoglyph-Angriffe sind, aber exakte Match-Gates trotzdem brechen. Lokalisierungsingenieure nutzen das kostenlose Browser-Werkzeug auf dieser Seite, um zu bestätigen, wie eine Beispielphrase sich faltet, bevor sie dieselbe Form in Abnahmetests verankern.
Anwendungsfälle
Deduplizierung in Suche und Katalog
Normalisieren Sie Titel und Namen mit NFKC vor der Indexierung, damit Ligaturen, Vollbreitenbuchstaben und Kompatibilitätsziffern dieselben Suchschlüssel teilen.
Slug- und URL-Pipelines
Falten Sie Kompatibilitätszeichen vor der Slug-Erzeugung, damit gestyltes Unicode aus der Zwischenablage keine unerwarteten Pfadsegmente erzeugt.
Häufige Fragen
Was ist Unicode-NFKC-Normalisierung?
NFKC ist Normalization Form Compatibility Composition aus UAX #15: Kompatibilitätszerlegung von Präsentationsformen, dann kanonische Komposition. Es faltet Ligaturen und gestylte Zeichen zu einer stabilen komponierten Zeichenkette für Abgleich und Suche.
Wie unterscheidet sich NFKC von NFC?
NFC behandelt nur kanonische Äquivalenz (zum Beispiel e plus Akut zu é). NFKC wendet zusätzlich Kompatibilitätsabbildungen wie fi→fi und Vollbreite A→A vor der Komposition an, was für Gleichheit und Indexierung besser geeignet ist.
Wie unterscheidet sich NFKC von NFKD?
Beide wenden zuerst dieselbe Kompatibilitätsfaltung an. NFKD hört dort auf und lässt Akzente als getrennte Zeichen stehen, NFKC setzt sie danach wieder zusammen, sodass aus e plus kombinierendem Akut der Buchstabe é wird.
Wann sollte ich NFKC besser nicht verwenden?
Wenn Ligaturen, Vollbreitenformen oder gestaltete Buchstaben sichtbar bleiben müssen, etwa in einem gesetzten Text. NFKC entfernt diese Unterschiede absichtlich: Nutzen Sie NFC für die Anzeige und NFKC zum Vergleichen, Suchen oder Finden von Dubletten.
Was passiert mit Vollbreitenbuchstaben und hochgestellten Ziffern?
Sie werden zur gewöhnlichen Form: Lateinische Vollbreitenbuchstaben werden zu normalem A bis Z, hoch- oder tiefgestellte Ziffern zu gewöhnlichen Ziffern, Bruchzeichen zu Ziffern mit Bruchstrich. So passt aus PDFs kopierter Text zu dem, was man tippt.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/enc/unicode-nfkc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"file ㎞ ①"}'const res = await fetch("https://api.kit.forhosting.com/enc/unicode-nfkc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "file ㎞ ①"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/unicode-nfkc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "file ㎞ ①"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/unicode-nfkc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"file ㎞ ①"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"file ㎞ ①"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/unicode-nfkc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "file ㎞ ①"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.unicode_nfkc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Der Endpoint ist reine Parse-Arbeit: dieselbe Eingabe liefert stets dieselbe Ausgabe, ohne Netzwerkanrufe, ohne Modell-Tokens und ohne datumsabhängiges Verhalten. Fehlgeschlagene Validierung gibt invalid_input zurück und wird nicht berechnet; erfolgreiche Aufrufe kosten den veröffentlichten Basispreis $0.002.
Was NFKC leistet und wie es sich von NFC unterscheidet
Das Feld result ist die normalisierte Zeichenkette; text spiegelt die Eingabe; input_length und output_length melden JavaScript-Längen vor und nach der Normalisierung; changed ist true, wenn die Ausgabe zeichenweise von der Eingabe abweicht; und standard nennt UAX 15, damit Dokumentation und Audits mit der Unicode-Spezifikation und nicht mit einer Ad-hoc-Tabelle übereinstimmen.
Eingabevertrag, Antwortform und Fehlerverhalten
Fehlendes text scheitert mit einer klaren Meldung zum fehlenden Feld. Leere Zeichenketten sind gültig und normalisieren zu leer mit changed false. Weil die Implementierung den ECMAScript-normalize-Pfad des Hosts für Form NFKC nutzt, teilen Goldens und Produktion dieselbe deterministische Abbildung für jeden vom Motor unterstützten Skalar. Senden Sie per POST ein JSON-Objekt mit dem Pflichtfeld text, das die zu normalisierende Unicode-Zeichenkette enthält. Die Aliase input, value, s und data werden akzeptiert, damit Formulare, Abfragehilfen und SDK-Clients vertraute Namen ohne Umbenennung von Spalten wiederverwenden können. Der Wert muss eine Zeichenkette sein; endliche Zahlen und Boolesche Werte werden zur Bequemlichkeit in Scripting-Shells in dezimale bzw. true/false-Form umgewandelt, während Objekte, Arrays, ein null-Körper ohne Feld, NaN und Infinity mit invalid_input und einer benennenden Meldung scheitern. Zeichenketten länger als 65536 Zeichen werden abgelehnt, um den Worker-Speicher planbar zu halten. Bei Erfolg enthält der Körper stets result, das gespiegelte text, form fest auf die Zeichenkette NFKC, input_length, output_length, ein Boolesches changed und ein standard-Label, das auf Unicode-NFKC-Kompatibilitätskomposition verweist. Kombinieren Sie diesen Endpoint mit einem Codepunkt-Konverter, wenn Sie U-plus-Tokens vor und nach der Faltung prüfen müssen, oder mit Case-Folding-Werkzeugen, wenn die Suche sowohl NFKC als auch Groß-/Kleinschreibungsunabhängigkeit braucht. Ungültige Anfragen werden nicht berechnet; nur erfolgreiche Normalisierungen verbrauchen den Stückpreis von $0.002.
Wo ein NFKC-Normalisierer in echten Pipelines Nutzen stiftet
Weil die Fähigkeit reines Parse-Tier-A ist, kostet jeder erfolgreiche Aufruf $0.002, geht nicht ins Netz und stimmt byteweise mit dem kostenlosen interaktiven Pfad auf demselben Modul überein. Halten Sie Payloads unter dem Längenlimit, behandeln Sie invalid_input als zu behebenden Client-Fehler und nicht als wiederholbaren Serverfehler, und dokumentieren Sie, dass Sie NFKC bewusst gewählt haben, wenn anzeigetreues NFC die falsche Standardwahl für den Abgleich gewesen wäre.
Integrationsbeispiele
Golden-Tests für Textidentität
Pinnen Sie NFKC-Ausgaben für Ligaturen, kombinierende Zeichen und Kompatibilitätsquadrate in CI, damit Bibliotheken die Faltung nicht still ändern.
Technische Fragen
Welche Eingabe akzeptiert der Unicode-NFKC-Normalisierer?
Senden Sie ein JSON-Objekt mit dem Pflicht-String-Feld text (Aliase input, value, s, data). Fehlendes text, Nicht-String-Objekte/Arrays, nicht-endliche Zahlen und Zeichenketten über 65536 Zeichen liefern invalid_input.
Was enthält die Antwort?
result ist die NFKC-Zeichenkette; text spiegelt die Eingabe; form ist stets NFKC; input_length und output_length sind Zeichenlängen; changed ist true, wenn die Normalisierung die Zeichenkette geändert hat; standard nennt UAX #15.
Was kostet der Unicode-NFKC-Normalisierer?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.