Inspektor znaków Unicode
Zobacz punkty kodowe, bajty UTF-8/UTF-16 i sekwencje ucieczki każdego znaku
O tym narzędziu
Wklej dowolny tekst i zobacz każdy znak rozłożony na części: jego punkt kodowy (U+XXXX), bajty UTF-8, jednostki UTF-16, sekwencję ucieczki JavaScriptu, encję HTML i kategorię ogólną — plus sumy dla punktów kodowych, jednostek UTF-16, bajtów UTF-8 i znaków postrzeganych przez użytkownika (klastrów grafemowych).
To narzędzie na chwile „dlaczego ten napis jest dziwny?”: niewidoczne znaki (spacje zerowej szerokości, znaczniki BOM, znaki kierunku) pojawiają się jako widoczne wiersze; znaki-bliźniaki (cyrylickie а kontra łacińskie a) ujawniają różne punkty kodowe; a emoji, które „jest jednym znakiem”, okazuje się siedmioma punktami kodowymi połączonymi łącznikami zerowej szerokości.
Cztery różne sumy długości odpowiadają na odwieczne pytanie, dlaczego .length w JavaScripcie, limit bajtów w bazie danych i to, co widzi użytkownik, nigdy nie zgadzają się co do długości napisu.
Często zadawane pytania
- Dlaczego "🎉".length === 2 w JavaScripcie?
- Napisy w JavaScripcie liczą jednostki kodowe UTF-16. Znaki powyżej U+FFFF — w tym większość emoji — wymagają pary zastępczej, czyli dwóch jednostek. Inspektor pokazuje zarówno jednostki, jak i rzeczywisty punkt kodowy, a podsumowanie zlicza je osobno.
- Czym jest klaster grafemowy?
- Tym, co czytelnik postrzega jako jeden znak. é może być dwoma punktami kodowymi (e + akcent łączący), a emoji rodziny bywa złożone z siedmiu lub więcej połączonych łącznikami zerowej szerokości. Liczba grafemów pochodzi z Intl.Segmenter w przeglądarce — najbliższego odpowiednika „znaków tak, jak widzi je użytkownik”.
- Jak znaleźć niewidoczne znaki w napisie?
- Wklej go tutaj — każdy punkt kodowy dostaje własny wiersz, łącznie ze spacjami zerowej szerokości (U+200B), spacjami nierozdzielającymi (U+00A0), znacznikami BOM (U+FEFF) i znakami kierunku, każdy opisany kategorią. To klasyczni winowajcy „identycznych” napisów, które nie przechodzą porównania.
- Co mówią mi sekwencje bajtów UTF-8?
- Dokładnie to, co zostanie zapisane lub przesłane: ASCII to jeden bajt, większość rozszerzeń łacińskich dwa, CJK trzy, emoji cztery. Jeśli system utnie napis w środku sekwencji, dostaniesz znaki zastępcze (�) — widok bajtowy pokazuje, gdzie takie cięcia by wypadły.