Om du någonsin har försökt skicka ett tomt meddelande i Telegram, upptäckte du troligtvis att varken mellanslagstecknet eller newline - tecknet (Alt + Enter) skickas-inmatningsfältet rensas helt enkelt. Samtidigt kan du se att andra människor bokstavligen skickar dig ett tomt utrymme, och de lyckas. Var är magin här? Om du vill ha ett kort svar – sätter de in det "trasiga" tecknet u+3164. Du kan kopiera den från parenteserna och använda: "kg". Om du vill ha ett mer detaljerat svar Nedan kommer vi att berätta var den osynliga texten kommer ifrån, hur man får och använder den, varför du inte ska använda den i koden och vilka andra tecken det finns.

Osynlig Symbol – hur fungerar det?

Låt oss börja förklaringen med tabeller med tecken och kodningar. Varje dator på hårdvarunivå förstår 2 tecken: 0 och 1. Det här är inte bekvämt för människor, för vi är fortfarande mer vana vid bokstäver som bildas i ord, meningar, stycken och så vidare. För att arbeta med dessa bokstäver utan problem har vi kommit fram till ett mycket enkelt schema – vi tar bokstäverna i ordning och ger dem unika nummer: a = 1, b = 2, c = 3 och så vidare. Vi ger också unika siffror till stora bokstäver, tecken (punkt, komma, frågetecken och så vidare), blanksteg och siffror – en lista vävstolar en unik identifierare som tilldelas varje möjlig tecken. Denna lista kallas teckenkodstabellen, och den första kodtabellen känns igen var ASCII:

Den andra halvan är tom. Den är avsedd för regionala tecken. Tabellen i sig är som en referensinformation. Det finns också en kodning-en uppsättning instruktioner för dekryptering av denna tabell. Kodningar uppstod på grund av regionala standarder. De behövs för att läsa tecken "korrekt". Om vi tar den kodning som var vanlig i CIS vid den tiden, kommer det att finnas en instruktion i den: "för att få bokstaven" kg" använd 8x3 i ASCII"; om vi tar den kodning som användes i Tyskland vid den tiden, kommer det att skrivas: "för att få bokstaven" kg"använd 8x3".



Eftersom det var fruktansvärt obekvämt på grund av lokalisering till flera språk, uppfanns och standardiserades ett nytt teckentabell, Unicode. Unicode kan innehålla mer än 1 000 000 tecken. För närvarande har cirka 100 000 tecken lagts till i Unicode – så ytterligare 90% av cellerna är tillgängliga. En universell UTF-kodning uppfanns för Unicode för att göra det lättare för designers att rita teckensnitt (ja, för varje separat kodning måste designers rita ett separat teckensnitt).

Det är tillräckligt med bakgrund-nu är det dags att ta reda på var den osynliga karaktären kommer ifrån. Det handlar om buggarna i Unicode: vissa speciella (kontroll-och blanksteg) tecken beter sig inte som avsett. Den mest intressanta gruppen av buggar för oss är den osynliga karaktären. Poängen är att tecknet ska vara speciellt och ska visas som ett mycket litet mellanslag, men kodningen uppfattar det som ett fullfjädrat tecken (som en bokstav eller ett nummer) och visar det som ett stort utrymme. Du kanske redan har gissat hur det osynliga området som ett fullfjädrat tecken kan användas–för att infoga ett utrymme där det inte finns.

Osynlig text-hur man kopierar och klistrar in?

Till att börja med kommer vi att informera dig om de sorgliga nyheterna: även dessa kodningsbuggar fixas gradvis. Tidigare (2012) var ett trick populärt i "Vkontakte" – det var möjligt att infoga en newline-kontrolltecken i statusen och statusen delades in i 2 rader. Nu kan du inte göra det här-webbplatsen behandlar datautgången korrekt, och en sådan inskription bryter inte längre strängen:

Förutom & nsbp har sociala nätverk och budbärare klippt alla kontroll – och specialtecken-Du kan inte vända texten upp och ner eller visa den bakåt om den inte ursprungligen tillhandahålls av språket. Det finns tjänster som https://textinvert.ru/ , som låter dig ändra texten, men de vänder inte upp och ner, men hämtar liknande bokstäver på andra språk. Det kräver en speciell algoritm. Det är extremt svårt att skapa en stor tom text nu (även om det fortfarande är möjligt), men de osynliga emojierna och det tomma uppsättningstecknet som bröt många teckensnitt är också fixade nu. Allt som återstår är att skicka tomma meddelanden som dessa:

Unicode U+3164 för att infoga ett osynligt tecken

Så det mest användbara är ett osynligt utrymme, aka en"tom sträng". Faktum är att det finns 3 av dessa tecken, här är deras koder:

Karaktärens kod

Tecken

U+115F

U+1160

U+3164

För att se tecknet dubbelklickar du på det i tabellen. "Word", förresten, belyser symbolen något i grått.

När det gäller resten av karaktärerna finns det fortfarande blanktecken med adresser i området &#8192 – &#8202, men vi testade dem och fick reda på att budbärare uppfattar dem som vanliga utrymmen – därför är de inte av intresse. Om du behöver dem ändå eller om du vill testa dem själv i olika tjänster – här är några fler mellanslag och kontrolltecken:

Karaktärens kod

Vad betyder det?

Tecken

U+00A0

Utrymme utan mellanrum

 

U+2003

Em space

U+2007

Curly space (vad det än betyder)

U+2008

Skiljetecken utrymme

U+2009

Smalt utrymme

U+205F

Genomsnittligt matematikutrymme

U+3000

Ideografiskt utrymme

 

När det gäller de tre ovanstående tecknen är de initialt platshållare för överlappande koreanska tecken. De betraktas som fullfjädrade tecken, även om de är fyllmedel. Kanske beror detta beteende på att när en platshållare används, ska hieroglyfen inte överföras till en ny rad. Om tecknet anses vara ett blankutrymme kan en överföring ske (det beror på andra kontrolltecken). Hur som helst kan du kopiera ett tomt tecken från bordet och klistra in det var du än behöver. Men där det kan sättas in-låt oss se nedan.

Osynlig text i WhatsApp, VK, Instagram, Discord och spel

Som vi redan har sagt har alla större plattformar sett till att kontroll, speciella och andra "icke-standardiserade" tecken skärs ut under bearbetningen. Därför är tillämpningsområdet för sådana symboler extremt begränsat, även om de på vissa ställen fortfarande kan användas.

WhatsApp, Viber, Telegram:

Om du sätter in ett vanligt blankutrymme tillåter WhatsApp, som andra budbärare, dig inte att skicka det här meddelandet – knappen "Skicka" visas inte. U+3164 kan skickas. Resultatet är ett tomt meddelande.

VK, Facebook Messenger:

Det finns samma situation som med budbärare – du kan skicka tomma meddelanden till privata meddelanden. Förresten kan du också sätta U + 3164 i VK – statusen-den kommer att visas som en tom rad. Om du lägger ett vanligt utrymme raderas statusen och inskriptionen "Ställ in status" kommer att synas.

TikTok, Instagram: Det finns inget alternativ att använda det dolda utrymmet. Båda plattformarna betraktar den dolda rymdkaraktären som ett vanligt utrymme.

Oenighet:

Discord låter dig skicka tomma meddelanden. Samtidigt, om du försöker skapa en kanal med ett tomt namn, tillåter Discord dig inte att göra det här:

Vanliga frågor

Om jag lägger ett osynligt tecken i Skype, kommer statusen att vara "offline"?

Nej, Du kan skriva vilken text som helst i kontostatusfältet (inklusive ett dolt utrymme), statusen "online" eller "offline" ändras inte.

Vilka är problemen med null-tecknet i programmeringen?

Du bör inte använda dem i din kod om du inte vill förstöra den. Om du behöver använda ett tecken för lagring eller utmatning, skriv det till en variabel eller till utgången med en Unicode-kod. Varför är det bättre att inte använda det? Här är ett exempel för dig:

Som du kan se har vi förklarat en variabel som har mellanslag i namnet, vilket Python förbjuder. Samtidigt varnar PyCharm att något är fel med denna variabel:

Inte bara bryter du mot språkets regler, du lägger också en talare i dina hjul: för att komma åt en variabel måste du manuellt kopiera och klistra in namnet. Om du gör något projekt för dig själv och vill komplicera ditt liv kan du använda sådana utrymmen, men om du arbetar med ett seriöst projekt, försök inte ens göra det, annars kommer du att vara i trubbel.

Kan ett specialtecken bryta layouten?

I teorin är detta möjligt förutsatt att layouten görs krokigt eller ärver dåliga mönster. Det är bättre att inte använda sådana tecken i layouten, om du inte vill om du inte vill att allt ska bryta ner en dag.

Är det möjligt att använda dessa symboler för hacking?

Tekniskt sett kan ett av kontrolltecknen – '\0' – användas för att hacka systemet genom ett program skrivet i C. En nollterminator indikerar för programmet att raden har avslutats och skadlig kod kan skrivas efter terminatorn. Men det här är väldigt svårt, för det första måste du hitta ett program som felaktigt behandlar inkommande linjer och låter dig också köra skadlig kod från någon annans minne. För ungefär 15 år sedan var det ett populärt sätt att hacka, nu är det mer som en museumsutställning av hacking.

Vanliga frågor

Om jag lägger ett osynligt tecken i Skype, kommer statusen att vara "offline"?

Nej, Du kan skriva vilken text som helst i kontostatusfältet (inklusive ett dolt utrymme), statusen "online" eller "offline" ändras inte.

Vilka är problemen med null-tecknet i programmeringen?

Du bör inte använda dem i din kod om du inte vill förstöra den. Om du behöver använda ett tecken för lagring eller utmatning, skriv det till en variabel eller till utgången med en Unicode-kod. Varför är det bättre att inte använda det? Här är ett exempel för dig:

Som du kan se har vi förklarat en variabel som har mellanslag i namnet, vilket Python förbjuder. Samtidigt varnar PyCharm att något är fel med denna variabel:

Inte bara bryter du mot språkets regler, du lägger också en talare i dina hjul: för att komma åt en variabel måste du manuellt kopiera och klistra in namnet. Om du gör något projekt för dig själv och vill komplicera ditt liv kan du använda sådana utrymmen, men om du arbetar med ett seriöst projekt, försök inte ens göra det, annars kommer du att vara i trubbel.

Kan ett specialtecken bryta layouten?

I teorin är detta möjligt förutsatt att layouten görs krokigt eller ärver dåliga mönster. Det är bättre att inte använda sådana tecken i layouten, om du inte vill om du inte vill att allt ska bryta ner en dag.

Är det möjligt att använda dessa symboler för hacking?

Tekniskt sett kan ett av kontrolltecknen – '\0' – användas för att hacka systemet genom ett program skrivet i C. En nollterminator indikerar för programmet att raden har avslutats och skadlig kod kan skrivas efter terminatorn. Men det här är väldigt svårt, för det första måste du hitta ett program som felaktigt behandlar inkommande linjer och låter dig också köra skadlig kod från någon annans minne. För ungefär 15 år sedan var det ett populärt sätt att hacka, nu är det mer som en museumsutställning av hacking.