fixmint
CS

Skryté znaky v textu: kde se ukrývají a jak je odstranit

Autor: · · aktualizováno 8. listopadu 2026 · 4 min čtení

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 zdarma

Odkud 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ů:

  1. 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í.
  2. 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.
  3. 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

  1. Vložte text do pole Váš text.
  2. 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.
  3. Nechte zaškrtnuté Ponechat spojovací znaky uvnitř emoji, aby se emoji sekvence dál zobrazovaly jako jeden symbol.
  4. 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í.

    Vaše hodnocení (nepovinné)

    Váš e-mail se nikde nezobrazuje ani neukládá.

    Obálka knihy How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 stran o lidských, ekonomických a strategických výhodách, které zůstanou vzácné, i když umělá inteligence zvládne většinu kognitivních prací.

    $3.84Koupit na GumroaduAnglicky