Ukryte znaki w tekście: gdzie się chowają i jak je usunąć
Ukryte znaki to niewidoczne znaki Unicode, takie jak spacje zerowej szerokości, twarde spacje i znaki kierunkowe. Wyglądają jak zwykła spacja albo wcale nie są widoczne, więc tekst wydaje się w porządku, ale wyszukiwarka, kod i walidacja formularzy traktują go jak inny tekst. Znajdziesz je, sprawdzając kody znaków, a usuniesz, kasując lub zastępując konkretne znaki.
Usuwanie ukrytych znakówNiewidoczne śmieci w tekścieZrób to za darmoSkąd się biorą
Większość ukrytych znaków trafia do tekstu przez kopiowanie, a nie przez pisanie:
- Strony internetowe. Serwisy używają twardych spacji (U+00A0), żeby dwa wyrazy nie rozdzieliły się na końcu wiersza, i spacji zerowej szerokości (U+200B), żeby zaznaczyć miejsce, w którym długie słowo może się przenieść. Kopiując fragment, kopiujesz też je.
- Edytory tekstu. Miękkie łączniki (U+00AD) są wstawiane przy dzieleniu wyrazów. Są niewidoczne, dopóki wiersz nie zostanie podzielony w tym miejscu. Niektóre edytory automatycznie wstawiają też twarde spacje w określonych miejscach.
- Komunikatory i e-mail. Wiadomości skopiowane z czatu lub klienta poczty mogą zawierać łączniki zerowej szerokości i znaki kierunkowe, zwłaszcza gdy tekst miesza języki.
- Tekst o mieszanym kierunku. Arabski, hebrajski i tekst mieszany korzystają ze znaków kierunkowych, takich jak znak kierunku od lewej do prawej (U+200E), znak kierunku od prawej do lewej (U+200F) oraz znaki osadzania i nadpisywania (U+202A do U+202E). Określają one sposób wyświetlania wiersza, a nie treść.
- Znaki BOM. Znacznik kolejności bajtów (BOM, U+FEFF) na początku pliku to sygnatura, którą zapisują niektóre edytory. Jest niewidoczny, ale staje się prawdziwym pierwszym znakiem, gdy plik jest odczytywany jako zwykły tekst.
- Okna czatów AI. Tekst skopiowany z niektórych interfejsów czatów AI też może zawierać takie znaki. Najprawdopodobniej przyczyną jest sposób wyświetlenia i kopiowania tekstu, więc nie traktuj ich jako oznaki zamiaru.
Dlaczego sprawiają problemy
Każdy ukryty znak to prawdziwy kod znaku, więc zmienia tekst, nawet gdy strona wygląda identycznie:
- Wyszukiwanie nie działa. Spacja zerowej szerokości w środku słowa psuje dopasowanie, więc wyszukiwanie tego słowa nic nie znajduje.
- Kod przestaje działać. Twarda spacja w pliku źródłowym to w wielu językach błąd składni, a komunikat często wskazuje wiersz, który wygląda idealnie. Poradnik o cudzysłowach typograficznych opisuje inny częsty problem z wklejaniem w kodzie.
- Walidacja formularza odrzuca dane. Adres e-mail z spacją zerowej szerokości po znaku @ wygląda poprawnie, ale nie przechodzi sprawdzenia.
- Liczniki się rozjeżdżają. Liczba znaków zależy od narzędzia: raz uwzględnia te znaki, raz je pomija, więc ten sam tekst może mieć dwa różne wyniki. Policz tekst przed i po oczyszczeniu w licznik słów i znaków, aby zobaczyć różnicę.
Oto mały przykład. Słowo „faktura” ma osiem liter. Jeśli w środku wstawisz spację zerowej szerokości, to samo słowo będzie miało dziewięć kodów znaków, a na ekranie wygląda dokładnie tak samo. Wyszukiwanie słowa „faktura” nie znajdzie drugiej wersji.
Jak je zobaczyć
Samo patrzenie na tekst nie pomoże, więc użyj jednej z tych metod:
- Wklej tekst do narzędzia, które wypisuje kody znaków, np. usuwanie ukrytych znaków. Pokaże, co znalazło, zanim cokolwiek zmieni.
- W edytorze kodu włącz opcję pokazywania białych znaków lub znaków specjalnych. Twarde spacje będą wtedy wyglądać inaczej niż zwykłe.
- W języku programowania wypisz kody znaków podejrzanego ciągu. W Pythonie na przykład
[hex(ord(c)) for c in text]wypisze każdy z nich, więc twarda spacja pojawi się jako 0xa0, a spacja zerowej szerokości jako 0x200b.
Jak je usunąć
Usuwanie powinno być precyzyjne. Kasowanie wszystkich znaków spoza ASCII zniszczyłoby też akcenty, cudzysłowy i litery z innych języków. Zamiast tego:
- Zastąp twarde spacje zwykłymi spacjami, bo prawie zawsze mają być spacjami.
- Usuń spacje zerowej szerokości, miękkie łączniki, znaki BOM i przypadkowe znaki kierunkowe.
- Zachowaj litery z akcentami, typograficzne cudzysłowy i prawdziwą interpunkcję.
Popraw wklejony tekst jest stworzony do tekstu skopiowanego skądś indziej, więc użyj go, gdy w kopii są też poszarpane podziały wierszy lub dziwne odstępy.
Jak to zrobić w fixmint
- Wklej tekst do pola Twój tekst.
- Przeczytaj listę znalezionych znaków. Każdy znak ma nazwę, np. ZWSP dla spacji zerowej szerokości, i oznaczenie, co się z nim stanie.
- Zostaw zaznaczoną opcję Zachowaj łączniki w emoji, dzięki czemu sekwencje emoji nadal będą wyświetlane jako jeden symbol.
- Zaznacz Zamieniaj też typograficzne cudzysłowy, myślniki i … na zwykły ASCII tylko dla kodu lub danych, a potem użyj Kopiuj albo Pobierz .txt.
Przypadki szczególne
- Sekwencje emoji celowo używają łączników zerowej szerokości. Ich usunięcie rozbije jeden emoji na kilka symboli.
- Twarda spacja jest poprawna w niektórych zasadach typografii, np. między liczbą a jednostką, i w niektórych zasadach interpunkcji francuskiej. Zamieniaj ją tylko wtedy, gdy wiesz, że jest przypadkowa.
- Po oczyszczeniu tekstu porównaj go z oryginałem, aby zobaczyć dokładnie, co się zmieniło.
Szybkie odpowiedzi
Czy ukryte znaki świadczą o tym, że tekst napisała AI?
Nie. Pochodzą ze stron internetowych, edytorów tekstu, komunikatorów i kopiowania w ogóle. Ich obecność nie pokazuje, kto lub co napisało tekst.
Czy usunięcie wszystkich znaków spoza ASCII rozwiąże problem?
Nie. Usunęłoby też akcenty, cudzysłowy i litery z innych języków. Usuń konkretne niewidoczne kody znaków.
Jak sprawdzić, czy ciąg zawiera ukryte znaki?
Porównaj jego długość z liczbą znaków, które widzisz, albo wklej go do narzędzia wypisującego kody znaków. Jeśli liczby się różnią, w środku jest coś niewidocznego.
Przetłumaczone z Wersja angielska przy wsparciu AI.
Komentarze
Brak komentarzy. Bądź pierwszy.


