Detektor niewidzialnych znaków
Wklej dowolny tekst, a detektor wykryje wszystkie niewidoczne znaki, jakie się w nim znajdują: spacje o zerowej szerokości, oznaczenia kierunku, znaczniki BOM, miękkie dywizy, spacje nierozdzielające oraz grupę kontrolnych punktów kodowych Unicode, które wyglądają jak puste miejsce, lecz psują wyszukiwanie, porównywanie (diff) oraz kopiowanie i wklejanie. Każdy wykryty znak jest opisany swoim punktem kodowym (U+200B), oficjalną nazwą w Unicode oraz pozycją w ciągu, dzięki czemu precyzyjnie zlokalizujesz ukryty błąd, zanim go usuniesz.
Jak wykryć niewidzialne znaki
-
1
Wklej tekst
Wpisz podejrzany fragment kodu, fragment kodu, skopiowaną wiadomość lub wartość konfiguracji.
-
2
Uruchom skanowanie.
Narzędzie przejmuje każdy punkt kodu i oznacza wszystkie, które odpowiadają listy niewidzialnych lub formatowych znaków.
-
3
Przeczytaj raport.
Każdy wynik pokazuje swoją pozycję (liczoną od 1), punkt kodowy w formacie `U+HHHH` oraz nazwę Unicode (np. spacja o zerowej szerokości, BOM itd.).
-
4
Oczyść tekst
Wykorzystaj akcję „Zastąpić", aby usunąć lub zobrazować ukryte znaki, a następnie wklej oczyszczoną wersję.
Niewidzialne znaki i ich pochodzenie
Te znaki istnieją z uzasadnionych powodów – takich jak układ tekstu, kierunek pisowni czy kombinowanie znaków. Stają się jednak błędami, gdy wychodzą poza kontekst, dla którego zostały zaprojektowane, i pojawiają się w kodzie, konfiguracjach, zapytaniach wyszukiwania lub nazwach użytkowników.
Znaki, których szuka detektor
| Punkt kodowy | Nazwa | Gdzie zwykle się przemyca |
|---|---|---|
U+200B |
Spacja o zerowej szerokości | Edytory tekstu sformatowanego, edytory tekstu |
U+200C |
Nie-łącznik o zerowej szerokości | Typografia perska i hindi |
U+200D |
Łącznik o zerowej szerokości | Sekwencje emoji, pisma indyjskie |
U+200E |
Znacznik od lewej do prawej | Tekst zawierający pisma LTR i RTL jednocześnie |
U+200F |
Znacznik od prawej do lewej | To samo |
U+202A..E |
Osadzanie / nadpisanie | To samo; czasem wykorzystywane złośliwie (Trojan Source) |
U+2028 |
Separator wiersza | Kopiowany z Worda, psuje kodery JSON |
U+2029 |
Separator akapitu | To samo |
U+FEFF |
Znacznik kolejności bajtów | Pliki zapisane jako UTF-8 z BOM w Notepadzie |
U+00A0 |
Spacja nierozdzielająca | Spacja typograficzna z Worda |
U+00AD |
Miękki dywiz | Wskazówki dzielenia wyrazów w tekście sformatowanym |
Typowe objawy błędu związanego z ukrytym znakiem
- Porównanie ciągów, które „powinno“ być równe, w rzeczywistości równe nie jest. Skopiuj wartości do tego narzędzia i sprawdź liczbę bajtów.
- Wyrażenie regularne (regex), które pasuje na oko, ale zawodzi w kodzie. Często jest to
U+00A0podszywający się pod spację. - Parser JSON wysypuje się na wklejonym ładunku. Zwykle chodzi o BOM na początku lub o
U+2028w literale tekstowym, który JavaScript odrzuca wewnątrz JSON. - Tytuł SEO ma niewłaściwą długość. Spacja o zerowej szerokości przekracza limit bez żadnej widocznej zmiany.
Perspektywa Trojan Source
Dwukierunkowe znaki nadpisujące (U+202E, U+2066..U+2069) mogą sprawić, że kod źródłowy będzie renderowany w jednej kolejności, a kompilowany w innej, to klasa ataków „Trojan Source“. Jeśli przeglądasz kod od niezaufanych współtwórców, przepuść ich diffy przez ten detektor przed scaleniem.
Najczęściej zadawane pytania
Notepad oraz niektóre starsze narzędzia Windows domyślnie stosują format „UTF-8 z BOM“. BOM (U+FEFF) jest odpowiedni dla aplikacji Windows, ale psuje wiele potoków powłoki, pliki PHP (w których BOM jest wypisywany jako wynik przed znacznikiem <?php) oraz parsery JSON.
Wygląda jak standardowa pozycja na ekranie, ale zachowuje się inaczej: nie pozwala na przerwanie linii i nie jest obsługiwana przez większość wariantów regularnego wyrażenia \s we wszystkich językach. Często pojawia się w ścieżkach plików, adresach e-mail oraz nazwach użytkowników skopiowanych z źródeł tekstowych bogatych.
Nie zawsze. W tekście arabskim, perskim lub w pismie devanagari elementy łączące o szerokości zerowej oraz te nie łączące są semantycznie obowiązkowe. W kodzie, konfiguracjach oraz większości tekstów angielskich można je swobodnie usunąć. W treściach w języku naturalnym należy użyć narzędzia do wykrywania tych elementów przed ich usuwaniem.
Nie – analiza jest przeprowadzana dla aktualnego żądania, a nic z wpisanego przez użytkownika nie jest zapisywane ani rejestrowane po stworzeniu odpowiedzi.
Powiązane narzędzia
Symbol „mniejsze lub równe"
Skopiuj znak ≤ oraz powiązane matematyczne symbole porównania. Obejmuje Unicode, encje HTML i zapis LaTeX do arkuszy kalkulacyjnych, prac naukowych i stron internetowych.
Generator nazw miast
Generuj fikcyjne nazwy miast, miasteczek, wsi i stolic do worldbuildingu, map, gier, opowieści i danych testowych, z krótkimi notatkami do każdego wyniku.
Symbole strzałek do skopiowania
Kopiuj popularne strzałki Unicode jednym kliknięciem: proste, podwójne, ukośne, zawinięte, okrężne i trójkątne do dokumentów, czatu i projektów.
Generator nazw domenowych
Generuj pomysły na nazwy domenowe z jednego słowa kluczowego: prefiksy, sufiksy, podwojone litery i końcówki cyfrowe w sześciu popularnych TLD.
Konwerter tekstu przyjaznego dyslektykom
Przeformatuj wklejony tekst na krótkie akapity i linie o około 72 znakach, aby łatwiej się czytało. Skopiuj wynik do dowolnego dokumentu, e-maila lub edytora.
Cudzysłowy do kopiowania
Przeglądaj 18 par cudzysłowów prostych, drukarskich, europejskich, ozdobnych i CJK. Kopiuj znak otwierający, zamykający lub oba wraz z punktami kodowymi Unicode.
Narzędzie jest dostępne w innych językach
- Detektor för osynliga tecken [SV]
- أداة كشف الأحرف غير المرئية [AR]
- Détecteur de caractères invisibles [FR]
- Detektor Karakter Tak Terlihat [ID]
- Unsichtbarer Zeichendetektor [DE]
- 보이지 않는 문자 탐지기 [KO]
- เครื่องตรวจจับตัวอักษรที่มองไม่เห็น [TH]
- Onzichtbare karakter detector [NL]
- Bộ phát hiện ký tự vô hình [VI]
- 不可視文字検出器 [JA]
- Detector de Caracteres Invisibles [ES]
- Detector de Caracteres Invisíveis [PT]
- Invisible Character Detector [EN]
- Rilevatore di Caratteri Invisibili [IT]
- Обнаружитель невидимых символов [RU]
- Görünmez Karakter Tespit Cihazı [TR]
- 不可见字符检测器 [ZH]