Co to jest normalizacja Unicode?

Unicode definiuje wiele sposobów reprezentacji tego samego widocznego znaku. Na przykład znak "é" może być przechowywany jako pojedynczy prekompozycyjny punkt kodowy (U+00E9) lub jako litera "e" następowana łączącym akcentem ostrym (U+0065 U+0301). Oba renderują się identycznie, ale różnią się bajt po bajcie, co powoduje problemy przy porównywaniu stringów, wyszukiwaniu i przetwarzaniu tekstu.

Normalizacja Unicode to proces konwersji tekstu do kanonicznej reprezentacji, tak aby równoważne stringi stały się identyczne. Standard Unicode definiuje cztery formy normalizacji:

  • NFC (Canonical Decomposition, followed by Canonical Composition): Forma prekompozycyjna; najbardziej kompaktowa, szeroko stosowana w sieci i większości systemów operacyjnych.
  • NFD (Canonical Decomposition): Forma w pełni rozłożona; każdy znak jest rozbity na literę bazową plus znaki łączące.
  • NFKC (Compatibility Decomposition, followed by Canonical Composition): Jak NFC, ale również składa znaki kompatybilności (np. ligatury, indeksy górne, warianty pełnej szerokości) do ich kanonicznych odpowiedników.
  • NFKD (Compatibility Decomposition): Jak NFD, ale również stosuje rozkład kompatybilności.

Opis narzędzia

To narzędzie normalizuje tekst Unicode z jednej formy normalizacji na inną. Wybierz formy źródłową i docelową, wklej swój tekst, a skonwertowane dane wyjściowe pojawią się natychmiast.

Funkcje

  • Wszystkie cztery formy normalizacji: Obsługuje NFC, NFD, NFKC i NFKD zarówno jako źródło, jak i cel.
  • Konwersja dwukierunkowa: Przełączaj się między dowolną kombinacją form swobodnie.
  • Dane wyjściowe w czasie rzeczywistym: Tekst jest normalizowany natychmiast podczas pisania lub wklejania.
  • Obsługuje dowolny skrypt Unicode: Działa z alfabetem łacińskim, CJK, arabskim, cyrylicą i dowolnym innym tekstem kodowanym w Unicode.

Jak to działa

Narzędzie stosuje standardową metodę JavaScript String.prototype.normalize() z wybraną formą docelową. Jest to w pełni zgodna ze specyfikacją implementacja normalizacji Unicode, zgodnie z definicją w Unicode Standard Annex #15.

Przypadki użycia

  • Naprawy porównywania stringów: Normalizuj tekst przed porównaniem lub indeksowaniem, aby upewnić się, że wizualnie identyczne stringi pasują do siebie prawidłowo.
  • Spójność wyszukiwania i bazy danych: Standaryzuj dane wejściowe użytkownika do jednej formy (zazwyczaj NFC) przed przechowaniem w bazie danych, aby zapobiec duplikatom, które różnią się tylko kodowaniem.
  • Składanie kompatybilności: Użyj NFKC, aby zwinąć ligatury, indeksy górne i znaki pełnej szerokości do ich standardowych odpowiedników dla indeksowania wyszukiwania lub przetwarzania języka naturalnego.