Normalizator Unicode
Ten sam widoczny ciąg może być przechowywany jako różne sekwencje bajtów w zależności od tego, czy akcent istnieje jako pojedynczy punkt kodowy, czy jako litera plus znak łączący. Ten normalizator konwertuje tekst między czterema formami normalizacji Unicode (NFC, NFD, NFKC, NFKD), aby twoje ciągi porównywały się czysto w bazach danych, indeksach wyszukiwania, skryptach deduplikacji i dopasowaniach wyrażeń regularnych.
Jak normalizować tekst Unicode
-
1
Wklej swoje dane
Wrzuć ciąg: litery z akcentami, tekst CJK, ligatury, cokolwiek, co wydaje się niespójne.
-
2
Wybierz formę
Wybierz NFC (złożona, zwykła forma webowa), NFD (rozłożona), NFKC (złożona zgodnościowa) albo NFKD (rozłożona zgodnościowa).
-
3
Porównaj liczby
Narzędzie podaje liczbę znaków (punktów kodowych) i długość w bajtach przed i po, abyś widział, czy forma skróciła, czy wydłużyła ciąg.
-
4
Skopiuj znormalizowany wynik
Użyj wyniku w bazie danych, ładunku API, generatorze slugów albo fiksturze testowej.
Cztery formy i kiedy używać każdej
Normalizacja Unicode jest zdefiniowana w standardowym załączniku UAX #15. Cztery formy różnią się wzdłuż dwóch osi: kanoniczna wobec zgodnościowej oraz złożona wobec rozłożonej.
Zestawienie obok siebie
| Forma | Złożenie | Mapowanie | Kiedy używać |
|---|---|---|---|
| NFC | Złożona | Tylko kanoniczne | Domyślnie dla treści webowych, baz danych, nazw plików |
| NFD | Rozłożona | Tylko kanoniczne | Przetwarzanie tekstu usuwające akcenty znak po znaku |
| NFKC | Złożona | Obejmuje zgodność | Wyszukiwanie, identyfikatory, filtry spamu, składanie do wyświetlania |
| NFKD | Rozłożona | Obejmuje zgodność | Agresywna normalizacja przed usunięciem znaków diakrytycznych |
Formy kanoniczne zachowują znaczenie
Wpisz é i przełączaj formy. NFC podaje 1 znak i 2 bajty (pojedynczy punkt kodowy U+00E9), natomiast NFD podaje 2 znaki i 3 bajty (zwykłe e, po którym następuje łączący akcent ostry, U+0301). Oba wyglądają identycznie na ekranie, ale są różnymi sekwencjami bajtów, i właśnie tę rozbieżność naprawia normalizacja. Formy kanoniczne jedynie przestawiają bajty, więc é w każdej z form zawsze oznacza literę e z akcentem ostrym.
Co tak naprawdę zmienia „zgodność”
Formy K (NFKC, NFKD) przepisują też znaki, które wyglądają pokrewnie, ale niosą inne formatowanie. Jest to operacja stratna: nie odzyskasz oryginału. Na przykład:
fi(U+FB01, łacińska mała ligatura fi) staje sięfi(dwie litery)①(U+2460, cyfra jeden w kółku) staje się1㌀(U+3300, kwadratowe CJK „apaato”) staje sięアパート- Pełnej szerokości
A(U+FF21) staje sięA
To potężne dla wyszukiwania i deduplikacji, ale niszczące dla typografii, więc sięgaj po formy K tylko wtedy, gdy wierność wizualna nie ma znaczenia.
Praktyczna zasada
- Przechowuj treść użytkownika w NFC.
- Porównuj identyfikatory w NFC, aby
cafézapisane jako pojedynczy punkt kodowy icafézapisane jakoe+ U+0301 pasowały do siebie; przejdź do NFKC, gdy chcesz też, abyfiifialbo pełnej szerokościAiAporównywały się jako równe, tak jak robią to reguły identyfikatorów w UAX #31. - Twórz slugi bez akcentów, normalizując do NFD i usuwając blok znaków łączących U+0300 do U+036F.
Najczęściej zadawane pytania
Zwykle oznacza to, że twoje dane były już w formie docelowej. Wklej tekst łączący różne źródła (nazwę pliku z Maca, skopiowany fragment PDF, stary wiersz bazy danych), a znacznie częściej zobaczysz zmianę liczby znaków i bajtów.
Dla wyświetlanych adresów URL: NFC. Dla slugów, w których chcesz czyste ASCII, znormalizuj do NFD, usuń znaki łączące wyrażeniem regularnym na U+0300 do U+036F, a potem zamień na małe litery. NFKD to alternatywa, gdy chcesz też składać ligatury i cyfry w kółkach.
Formy kanoniczne (NFC, NFD) nigdy nie zmieniają znaczenia, tylko przestawiają bajty. Formy zgodnościowe (NFKC, NFKD) jednak je zmieniają: ligatury się rozdzielają, litery pełnej szerokości się składają, a indeksy górne się spłaszczają. Używaj ich tylko wtedy, gdy właśnie o to ci chodzi.
Normalizacja działa na naszym serwerze za pomocą klasy Normalizer w PHP, a wynik wraca w tym samym żądaniu; twój tekst nie jest przechowywany. Zapisujemy tylko anonimowe zdarzenie odnotowujące, którą formę zastosowano, nigdy samej treści.
Powiązane narzędzia
Generator nazw miast
Generuj fikcyjne nazwy miast, miasteczek, wsi i stolic do worldbuildingu, map, gier, opowieści i danych testowych, w prawdziwym języku lub w wymyślonym stylu.
Generator tekstu w stylu gotyckim
Przekształć zwykły tekst w znaki Unicode typu blackletter (fraktura): 𝔄 𝔅 ℭ 𝔇. Kopiuj i wklejaj do opisów profilu, banerów oraz grafik zespołów metalowych.
Generator czcionek Discord
Zamień zwykły tekst w czcionki Unicode działające w nickach, nazwach serwerów i wiadomościach na Discordzie. Warianty pogrubione, kursywą, fraktura, monospace i ozdobne.
Generator tekstu do przewijania
Stwórz animowane nagłówki przesuwające się z regulowaną szybkością, rozmiarem czcionki i kolorami. Podejrzyj na żywo pasek CSS marquee lub pasek ogłoszeń w swojej przeglądarce.
Generator czcionek na Instagram
Generuj „czcionki" Unicode (pogrubienie, kursywa, pismo, monospace, fraktura), które wklejasz prosto do bio, nazwy, podpisów i komentarzy na Instagramie.
Generator Losowych Pytań
Generuj losowe pytania do rozmowy na przełamanie lodów, na podróż samochodem, na kolację lub do dziennika. Wybierz, ile pokazać, i przetasuj, aby uzyskać nowy zestaw. Pytania są po angielsku.
Narzędzie jest dostępne w innych językach
- Bộ chuẩn hóa Unicode [VI]
- Unicode-normaliserare [SV]
- مُطبِّع Unicode [AR]
- 유니코드 정규화기 [KO]
- ตัวปรับข้อความให้เป็นมาตรฐาน Unicode [TH]
- Normaliseur Unicode [FR]
- Penormal Unicode [ID]
- Unicode正規化ツール [JA]
- Unicode-Normalisierer [DE]
- Unicode-normaliseerder [NL]
- Normalizador Unicode [ES]
- Normalizador Unicode [PT]
- Unicode Normalizer [EN]
- Normalizzatore Unicode [IT]
- Нормализатор Unicode [RU]
- Unicode Normalleştirici [TR]
- Unicode 规范化工具 [ZH]