Was ist Unicode-Normalisierung?

Unicode definiert mehrere Möglichkeiten, um dasselbe sichtbare Zeichen darzustellen. Zum Beispiel kann das Zeichen "é" als ein einzelner vorkombinierter Code-Punkt (U+00E9) oder als der Buchstabe "e" gefolgt von einem kombinierenden akuten Akzent (U+0065 U+0301) gespeichert werden. Beide werden identisch dargestellt, unterscheiden sich aber Byte für Byte, was zu Problemen beim Stringvergleich, bei der Suche und bei der Textverarbeitung führt.

Unicode-Normalisierung ist der Prozess der Umwandlung von Text in eine kanonische Darstellung, sodass äquivalente Strings identisch werden. Der Unicode-Standard definiert vier Normalisierungsformen:

  • NFC (Kanonische Zerlegung, gefolgt von kanonischer Komposition): Vorkombinierte Form; am kompaktesten, weit verbreitet im Web und in den meisten Betriebssystemen.
  • NFD (Kanonische Zerlegung): Vollständig zerlegte Form; jedes Zeichen wird in Basisbuchstabe plus kombinierende Zeichen aufgeteilt.
  • NFKC (Kompatibilitätszerlegung, gefolgt von kanonischer Komposition): Wie NFC, aber faltet auch Kompatibilitätszeichen (z. B. Ligaturen, Hochzahlen, Vollbreitenvarianten) in ihre kanonischen Äquivalente zusammen.
  • NFKD (Kompatibilitätszerlegung): Wie NFD, aber wendet auch Kompatibilitätszerlegung an.

Werkzeugbeschreibung

Dieses Werkzeug normalisiert Unicode-Text von einer Normalisierungsform in eine andere. Wählen Sie die Quell- und Zielformen aus, fügen Sie Ihren Text ein, und die konvertierte Ausgabe wird sofort angezeigt.

Funktionen

  • Alle vier Normalisierungsformen: Unterstützt NFC, NFD, NFKC und NFKD als Quelle und Ziel.
  • Bidirektionale Konvertierung: Wechseln Sie frei zwischen beliebigen Kombinationen von Formen.
  • Echtzeit-Ausgabe: Text wird sofort normalisiert, während Sie eingeben oder einfügen.
  • Funktioniert mit jedem Unicode-Skript: Funktioniert mit Lateinisch, CJK, Arabisch, Kyrillisch und jedem anderen Unicode-codierten Text.

Funktionsweise

Das Werkzeug wendet die Standard-JavaScript-Methode String.prototype.normalize() mit der ausgewählten Zielform an. Dies ist eine vollständig spezifikationskonform implementierte Unicode-Normalisierung wie in Unicode Standard Annex #15 definiert.

Anwendungsfälle

  • Stringvergleich-Fixes: Normalisieren Sie Text vor dem Vergleichen oder Indizieren, um sicherzustellen, dass visuell identische Strings korrekt übereinstimmen.
  • Such- und Datenbankkonsistenz: Standardisieren Sie Benutzereingaben auf eine einzelne Form (typischerweise NFC), bevor Sie sie in einer Datenbank speichern, um doppelte Einträge zu vermeiden, die sich nur in der Codierung unterscheiden.
  • Kompatibilitätsfaltung: Verwenden Sie NFKC, um Ligaturen, Hochzahlen und Vollbreitenzeichen in ihre Standardäquivalente zu vereinheitlichen, um Suchindexierung oder Verarbeitung natürlicher Sprache zu ermöglichen.