Skryté znaky v textu: kde se ukrývají a jak je odstranit
Skryté znaky jsou neviditelné kódové body Unicode, jako jsou nulové mezery, nezalomitelné mezery a směrové značky. Vypadají jako obyčejná mezera nebo vůbec nic, takže text na první pohled působí v pořádku, zatímco vyhledávání, kód a validace formulářů ho berou jako jiný text. Najdete je tak, že prohlédnete kódové body, a odstraníte je tak, že smažete nebo nahradíte právě tyto znaky.
Odstranit skryté znakyNeviditelné nečistoty v textuVyzkoušet zdarmaOdkud se berou
Většina skrytých znaků se do textu dostane kopírováním, ne psaním:
- Webové stránky. Weby používají nezalomitelné mezery (U+00A0), aby se dvě slova nerozdělila na konci řádku, a nulové mezery (U+200B), aby označily místo, kde smí dlouhé slovo zalomit. Když zkopírujete pasáž, zkopírují se i ony.
- Textové editory. Měkké spojovníky (U+00AD) se vkládají při dělení slov. Jsou neviditelné, dokud se na nich řádek nezalomí. Některé editory navíc na určitých místech automaticky vkládají nezalomitelné mezery.
- Chatovací aplikace a e-maily. Zprávy zkopírované z chatu nebo e-mailového klienta mohou obsahovat spojovací znaky a směrové značky, zvlášť když text míchá jazyky.
- Text se smíšeným směrem. Arabština, hebrejština a smíšený text používají směrové značky, jako je značka zleva doprava (U+200E), značka zprava doleva (U+200F) a vnořovací a přepisovací znaky (U+202A až U+202E). Ovlivňují, jak se řádek zobrazí, ne co říká.
- Značky pořadí bajtů. Značka pořadí bajtů (BOM, U+FEFF) na začátku souboru je podpis, který některé editory zapisují. Je neviditelná, ale při čtení souboru jako prostého textu se z ní stane skutečný první znak.
- Okna AI chatů. Text zkopírovaný z některých rozhraní AI chatů může tyto znaky také obsahovat. Pravděpodobná příčina je způsob, jakým byl text vykreslen a zkopírován, takže je nečtěte jako známku záměru.
Proč způsobují potíže
Každý skrytý znak je skutečný kódový bod, takže text mění, i když stránka vypadá stejně:
- Vyhledávání selže. Nulová mezera uvnitř slova přeruší shodu, takže hledání daného slova nic nenajde.
- Kód přestane fungovat. Nezalomitelná mezera ve zdrojovém souboru je v mnoha jazycích syntaktická chyba a chyba často ukazuje na řádek, který vypadá naprosto správně. Druhý častý problém s vloženým textem v kódu popisuje průvodce typografickými uvozovkami.
- Validace formuláře vstup odmítne. E-mailová adresa s nulovou mezerou za znakem @ vypadá správně, ale kontrolu neprojde.
- Počty se rozcházejí. Počty znaků mohou tyto znaky zahrnovat nebo nezahrnovat podle nástroje, takže stejný text může mít dva různé součty. Spočítejte text před čištěním a po něm pomocí počítadla slov a znaků a uvidíte rozdíl.
Tady je malý příklad. Slovo „faktura“ má osm písmen. Pokud je uvnitř nulová mezera, je stejné slovo dlouhé devět kódových bodů a na obrazovce vypadá přesně stejně. Hledání slova „faktura“ tu druhou verzi nenajde.
Jak je zobrazit
Samotný pohled na text nepomůže, použijte proto jeden z těchto způsobů:
- Vložte text do nástroje, který vypisuje kódové body, například Odstranit skryté znaky. Ten ukáže, co našel, dřív než cokoli změní.
- V editoru kódu zapněte nastavení, které zobrazuje mezery nebo speciální znaky. Nezalomitelné mezery se pak zobrazí jinou značkou než běžné mezery.
- V programovacím jazyce vypište kódové body podezřelého řetězce. Například v Pythonu
[hex(ord(c)) for c in text]vypíše každý z nich, takže nezalomitelná mezera se objeví jako 0xa0 a nulová mezera jako 0x200b.
Jak je odstranit
Odstraňování má být cílené. Smazání všech znaků mimo ASCII by zničilo i diakritiku, uvozovky a písmena z jiných jazyků. Místo toho:
- Nezalomitelné mezery nahraďte běžnými mezerami, protože téměř vždy jde o mezery.
- Smažte nulové mezery, měkké spojovníky, značky pořadí bajtů a zbloudilé směrové značky.
- Ponechte písmena s diakritikou, typografické uvozovky a správnou interpunkci.
Oprava vloženého textu je určena pro text, který přišel odjinud, takže ji použijte, když zkopírovaný text obsahuje i rozbité konce řádků nebo podivné mezery.
Jak to udělat ve fixmintu
- Vložte text do pole Váš text.
- Přečtěte si seznam nalezeného. Každý znak je pojmenován, například ZWSP pro nulovou mezeru, a je u něj uvedeno, co se s ním stane.
- Nechte zaškrtnuté Ponechat spojovací znaky uvnitř emoji, aby se emoji sekvence dál zobrazovaly jako jeden symbol.
- Zaškrtněte Také převést typografické uvozovky, pomlčky en/em a … na čistý ASCII jen u kódu nebo dat, poté použijte Kopírovat nebo Stáhnout .txt.
Okrajové případy
- Emoji sekvence používají spojovací znaky záměrně. Jejich odstraněním se jeden emoji rozdělí na několik symbolů.
- Nezalomitelná mezera je v některé typografii správně, například mezi číslem a jednotkou nebo v některé francouzské interpunkci. Nahrazujte ji jen tam, kde víte, že jde o zbloudilý znak.
- Až bude text vyčištěný, porovnejte jej s originálem a uvidíte přesně, co se změnilo.
Rychlé odpovědi
Je přítomnost skrytých znaků známkou toho, že text napsala AI?
Ne. Berou se z webových stránek, textových editorů, chatovacích aplikací a kopírování textu obecně. Jejich přítomnost neukazuje, kdo nebo co text napsal.
Vyřeší problém odstranění všech znaků mimo ASCII?
Ne. Zničilo by to také diakritiku, uvozovky a písmena z jiných jazyků. Odstraňte raději konkrétní neviditelné kódové body.
Jak poznám, že řetězec obsahuje skryté znaky?
Porovnejte jeho délku s počtem znaků, které vidíte, nebo jej vložte do nástroje, který vypisuje kódové body. Pokud se počty liší, uvnitř je něco neviditelného.
Přeloženo z Anglický originál s pomocí AI.
Komentáře
Zatím žádné komentáře. Buďte první.


