Pokud jste se někdy pokusili odeslat prázdnou zprávu v telegramu, pravděpodobně jste zjistili, že není odesláno ani znaménko mezery, ani znak nového řádku (Alt + Enter) - vstupní pole je jednoduše vymazáno. Zároveň jste mohli vidět, že vám ostatní lidé doslova posílají prázdný prostor a uspějí. Kde je to kouzlo? Pokud chcete krátkou odpověď-vloží" zlomený " znak u + 3164. Můžete jej zkopírovat z závorek a použít:"ㅤㅤㅤ". Pokud chcete podrobnější odpověď, níže vám řekneme, odkud neviditelný text pochází, jak jej získat a používat, proč byste jej neměli používat v kódu a jaké další znaky existují.

Neviditelný Symbol-jak to funguje?

Začněme vysvětlení tabulkami znaků a kódování. Každý počítač na hardwarové úrovni chápe 2 znaky: 0 a 1. To není vhodné pro lidi, protože jsme stále více zvyklí na dopisy, které jsou tvořeny slovy, větami, odstavci a tak dále. Abychom s těmito písmeny pracovali bez problémů, přišli jsme s velmi jednoduchým schématem – bereme písmena v pořádku a dáváme jim jedinečná čísla: a = 1, b = 2, c = 3 a tak dále. Také dáváme jedinečná čísla velkým písmenům ,znaménkům (tečka, čárka, otazník atd.) – mezerám a číslům - seznam se objevuje jako jedinečný identifikátor, který je přiřazen každému možnému znaku. Tento seznam se nazývá tabulka znakového kódu a první tabulka kódu je rozpoznána jako ASCII:

Druhá polovina je prázdná. Je určen pro regionální znaky. Samotná tabulka je jako referenční informace. K dispozici je také kódování – sada pokynů pro dešifrování této tabulky. Kódování se objevilo kvůli regionálním standardům. Jsou potřebné pro čtení znaků "správně". Pokud vezmeme kódování, které bylo v té době běžné v CIS, bude v něm instrukce: "Chcete-li získat písmeno" г "použijte 8x3 v ASCII"; pokud vezmeme kódování, které bylo v té době používáno v Německu, bude napsáno: "Chcete-li získat písmeno" β"použijte 8x3".



Vzhledem k tomu, že to bylo strašně nepohodlné kvůli lokalizaci do několika jazyků, byla vynalezena a standardizována nová tabulka znaků Unicode. Unicode může obsahovat více než 1 000 000 znaků. V současné době bylo do Unicode přidáno asi 100 000 znaků – takže je k dispozici dalších 90% buněk. Pro Unicode bylo vynalezeno univerzální kódování UTF, které usnadnilo návrhářům kreslit písma (Ano, pro každé samostatné kódování musí návrháři nakreslit samostatné písmo).

To je dost pozadí-nyní je čas zjistit, odkud pochází neviditelná postava. Je to všechno o chybách Unicode: některé speciální znaky (ovládací a mezery) se nechovají tak, jak bylo zamýšleno. Nejzajímavější skupinou chyb pro nás je neviditelná postava. Jde o to, že značka by měla být zvláštní a měla by být zobrazena jako velmi malá mezera, ale kódování ji vnímá jako plnohodnotný znak (jako písmeno nebo číslo) a zobrazuje jej jako velký prostor. Možná jste již uhodli, jak lze neviditelnou oblast použít jako plnohodnotné označení-vložit místo, kde není k dispozici.

Neviditelný text - jak kopírovat a vložit?

Nejprve vás budeme informovat o smutných zprávách: i tyto kódovací chyby se postupně opravují. Dříve (v roce 2012) byl v "Vkontakte" populární trik-do stavu bylo možné vložit nový řídicí znak a stav byl rozdělen na 2 řádky. Nyní to nemůžete udělat-web zpracovává datový výstup správně a takový nápis již nepřeruší řetězec:

Kromě &nsbp, sociální sítě a poslové snížili všechny ovládací prvky a speciální znaky – nemůžete otočit text vzhůru nohama nebo jej zobrazit zpět, pokud není původně poskytován jazykem. Existují služby jako https://textinvert.ru/, které vám umožňují změnit text, ale neotáčejí jej vzhůru nohama, ale zvedají podobná písmena v jiných jazycích. Vyžaduje speciální algoritmus. Nyní je velmi obtížné vytvořit velký prázdný text (i když je to stále možné), ale neviditelné emodži a znak prázdné sady, který zlomil mnoho písem, jsou nyní také opraveny. Zbývá jen posílat prázdné zprávy, jako jsou tyto:

Unicode u + 3164 pro vložení neviditelného znaku

Nejužitečnější je tedy neviditelný prostor, neboli "prázdný řetězec". Ve skutečnosti existují 3 z těchto znaků, zde jsou jejich kódy:

Kód postavy

Znak

U + 115F

U + 1160

U+3164

Chcete-li vidět znak, poklepejte na něj v tabulce. "Slovo", mimochodem, mírně zvýrazní symbol šedě.

Pokud jde o ostatní znaky, stále existují znaky s mezerami s adresami v oblasti &#8192 – &#8202, ale Testovali jsme je a zjistili jsme, že poslové je vnímají jako obyčejné prostory-proto nejsou zajímavé – Pokud je přesto potřebujete nebo je chcete vyzkoušet sami v různých službách-zde je několik dalších mezer a ovládacích znaků:

Kód postavy

Co to znamená?

Znak

U+00A0

Prostor bez mezery

 

U + 2003

Em space

U + 2007

Curly space (ať už to znamená cokoli)

U + 2008

Interpunkční prostor

U + 2009

Úzký prostor

U + 205 F

Průměrný matematický prostor

U + 3000

Ideografický prostor

 

Pokud jde o tři výše uvedené znaky, zpočátku jsou zástupnými symboly pro překrývající se korejské znaky. Oni jsou považováni za plnohodnotné postavy, ačkoli oni jsou plniva. Možná je toto chování způsobeno skutečností, že při použití zástupného symbolu by hieroglyf neměl být přenesen na nový řádek. Pokud je znak považován za mezery, může dojít k přenosu (záleží na jiných řídicích znacích). Každopádně můžete zkopírovat prázdný znak z tabulky a vložit jej kamkoli potřebujete. Ale kde to může být vloženo-uvidíme níže.

Neviditelný text v WhatsApp, VK, Instagram, Discord a hry

Jak jsme již řekli, všechny hlavní platformy se ujistily, že během zpracování jsou vyříznuty kontrolní, speciální a další "nestandardní" znaky. Rozsah použití těchto symbolů je proto velmi omezený, i když na některých místech mohou být stále používány.

WhatsApp, Viber, Telegram:

Pokud vložíte pravidelné mezery, WhatsApp, stejně jako ostatní poslové, vám neumožňuje odeslat tuto zprávu – tlačítko "Odeslat" se nezobrazí. U + 3164 lze odeslat. Výsledkem je prázdná zpráva.

VK, Facebook Messenger:

Existuje stejná situace jako u poslů-můžete posílat prázdné zprávy soukromým zprávám. Mimochodem, můžete také umístit U + 3164 do stavu VK-zobrazí se jako prázdný řádek. Pokud vložíte běžný prostor, stav bude smazán a nápis "nastavit stav" bude viditelný.

TikTok, Instagram: Neexistuje žádná možnost použít skrytý prostor. Obě platformy považují charakter skrytého prostoru za pravidelný prostor.

Neshoda:

Discord umožňuje odesílat prázdné zprávy. Současně, pokud se pokusíte vytvořit kanál s prázdným názvem, Discord vám to nedovolí:

DOTAZ

Pokud do Skype vložím neviditelnou postavu, bude stav"offline"?

Ne, do stavového řádku účtu můžete napsat libovolný text (včetně skrytého prostoru), stav "online" nebo "offline" se nezmění.

Jaké jsou problémy s nulovým znakem v programování?

Neměli byste je používat ve svém kódu, pokud jej nechcete zničit. Pokud potřebujete použít znak pro ukládání nebo výstup, zapište jej do proměnné nebo na výstup pomocí kódu Unicode. Proč je lepší ji nepoužívat? Zde je příklad pro vás:

Jak vidíte, deklarovali jsme proměnnou, která má v názvu mezery, které Python zakazuje. Současně PyCharm varuje, že s touto proměnnou není něco v pořádku:

Nejen, že porušujete pravidla jazyka, ale také vkládáte paprsek do svých kol: pro přístup k proměnné budete muset ručně zkopírovat a vložit její název. Pokud děláte nějaký projekt pro sebe a chcete komplikovat svůj život, můžete použít takové prostory, ale pokud pracujete na nějakém vážném projektu, ani se o to nepokoušejte, jinak budete mít potíže.

Může speciální postava narušit rozvržení?

Teoreticky je to možné za předpokladu, že rozvržení je provedeno křivě nebo dědí špatné vzory. Je lepší nepoužívat takové znaky v rozvržení, pokud nechcete, pokud nechcete, aby se vše jednoho dne rozpadlo.

Je možné použít tyto symboly pro hackování?

Technicky lze jeden z řídicích znaků- '\0' - použít k hackování systému pomocí programu napsaného v C. nulový Terminátor označuje programu, že řádek skončil, a škodlivý kód lze zapsat za terminátorem. Ale je to velmi obtížné, protože nejprve musíte najít program, který nesprávně zpracovává příchozí linky, a pak vám také umožní spustit škodlivý kód z paměti někoho jiného. Asi před 15 lety to byl populární způsob hackování, nyní je to spíš jako muzejní exponát hackingu.