Hvis du nogensinde har forsøgt at sende en tom besked i Telegram, fandt du sandsynligvis ud af, at hverken mellemrumstegnet eller det nye linjetegn (Alt + Enter) sendes - indtastningsfeltet ryddes simpelthen. På samme tid kunne du se, at andre mennesker bogstaveligt talt sender dig et tomt rum, og de lykkes. Hvor er magien her? Hvis du vil have et kort svar – indsætter de det "ødelagte" tegn u+3164. Du kan kopiere det fra parenteserne og bruge: "Kristian". Hvis du vil have et mere detaljeret svar, vil vi nedenfor fortælle dig, hvor den usynlige tekst kommer fra, hvordan du får og bruger den, hvorfor du ikke skal bruge den i koden og hvilke andre tegn der er.

Usynligt Symbol - hvordan virker det?

Lad os starte forklaringen med tabeller med tegn og kodninger. Enhver computer på udstyrsniveau forstår 2 tegn: 0 og 1. Dette er ikke praktisk for folk, fordi vi stadig er mere vant til bogstaver, der er dannet i ord, sætninger, afsnit og så videre. For at arbejde med disse bogstaver uden problemer er vi kommet med en meget enkel ordning – vi tager bogstaverne i rækkefølge og giver dem unikke tal: a = 1, b = 2, c = 3 og så videre. Vi giver også unikke tal til store bogstaver, tegn (prik, komma, spørgsmålstegn og så videre), hvide rum og tal – en liste væver en unik identifikator, der er tildelt hvert muligt tegn. Denne liste kaldes tegnkodetabellen, og den første kodetabel genkendes var ASCII:

Anden halvdel er tom. Det er beregnet til regionale tegn. Selve tabellen er som en referenceinformation. Der er også en kodning – et sæt instruktioner til dekryptering af denne tabel. Kodninger optrådte på grund af regionale standarder. De er nødvendige for at læse tegn "korrekt". Hvis vi tager den kodning, der var almindelig i CIS på det tidspunkt, så vil der være en instruktion i den: "for at få bogstavet "Lira" brug 8H3 i ASCII"; hvis vi tager kodningen, der blev brugt i Tyskland på det tidspunkt, vil det blive skrevet: "for at få bogstavet "Lira" brug 8H3".



Da det var forfærdeligt ubelejligt på grund af lokalisering til flere sprog, blev en ny tegntabel, Unicode, opfundet og standardiseret. Unicode kan indeholde mere end 1.000.000 tegn. I øjeblikket er der tilføjet omkring 100.000 tegn til Unicode – så yderligere 90% af cellerne er tilgængelige. En universel UTF-kodning blev opfundet til Unicode for at gøre det lettere for designere at tegne skrifttyper (ja, for hver separat kodning skal designere tegne en separat skrifttype).

Det er nok Baggrund-nu er det tid til at finde ud af, hvor den usynlige karakter kommer fra. Det handler om Unicode ' s bugs: nogle specielle (kontrol og hvide rum) tegn opfører sig ikke som beregnet. Den mest interessante gruppe af fejl for os er den usynlige karakter. Pointen er, at tegnet skal være specielt og skal vises som et meget lille mellemrum, men kodningen opfatter det som et fuldgyldigt tegn (som et bogstav eller et tal) og viser det som et stort rum. Du har måske allerede gættet, hvordan det usynlige område som et fuldt udbygget tegn kan bruges–for at indsætte et rum, hvor det ikke er angivet.

Usynlig tekst – hvordan kopieres og indsættes?

Til at begynde med vil vi informere dig om de triste nyheder: selv disse kodningsfejl bliver gradvist rettet. Tidligere (i 2012) var et trick populært i "Vkontakte" – det var muligt at indsætte en nylinje kontrol karakter i status, og status blev opdelt i 2 linjer. Nu Kan du ikke gøre dette – siden behandler dataudgangen korrekt, og en sådan indskrift bryder ikke længere strengen:

Ud over &nsbp har sociale netværk og budbringere skåret alle kontrol – og specialtegn-Du kan ikke vende teksten på hovedet eller vise den baglæns, hvis den ikke oprindeligt leveres af sproget. Der er tjenester som https://textinvert.ru/, som giver dig mulighed for at ændre teksten, men de vender den ikke på hovedet, men henter lignende bogstaver på andre sprog. Det kræver en særlig algoritme. Det er ekstremt vanskeligt at oprette en stor tom tekst nu (selvom det stadig er muligt), men de usynlige emojier og det tomme sættegn, der brød mange skrifttyper, er også rettet nu. Det eneste, der er tilbage, er at sende tomme beskeder som disse:

Unicode U + 3164 til indsættelse af et usynligt tegn

Så den mest nyttige ting er et usynligt rum, også kaldet en "tom streng". Faktisk er der 3 af disse tegn, her er deres koder:

Tegnets kode

Tegn

U + 115F

U + 1160

U + 3164

For at se tegnet skal du dobbeltklikke på det i tabellen. "Ord", forresten, fremhæver lidt symbolet i gråt.

Som for resten af tegnene, der er stadig mellemrum tegn med adresser i området &#8192 – &#8202, men vi testede dem og fandt ud af, at budbringere opfatter dem som almindelige rum – derfor, de er ikke af interesse. Hvis du alligevel har brug for dem, eller du vil teste dem selv i forskellige tjenester – her er et par flere mellemrum og kontrolpersoner:

Tegnets kode

Hvad betyder det?

Tegn

U + 00A0

Plads uden et hul

 

U + 2003

Em space

U + 2007

Krøllet rum (hvad det end betyder)

U + 2008

Tegnsætning plads

U + 2009

Smal plads

U + 205F

Gennemsnitlig matematik plads

U + 3000

Ideografisk rum

 

Hvad angår de tre ovennævnte tegn, er de oprindeligt pladsholdere til overlappende koreanske tegn. De betragtes som fuldgyldige tegn, selvom de er fyldstoffer. Måske skyldes denne adfærd, at når en pladsholder anvendes, bør hieroglyfen ikke overføres til en ny linje. Hvis tegnet betragtes som et mellemrum, kan der forekomme en overførsel (det afhænger af andre kontroltegn). Under alle omstændigheder kan du kopiere et tomt tegn fra bordet og indsætte det, uanset hvor du har brug for det. Men hvor det kan indsættes – lad os se nedenfor.

Usynlig tekst i Facebook, Instagram, Discord og spil

Som vi allerede har sagt, har alle større platforme sørget for, at kontrol, specielle og andre "ikke-standard" tegn skæres ud under behandlingen. Derfor er anvendelsesområdet for sådanne symboler ekstremt begrænset, selvom de nogle steder stadig kan bruges.

Viber, Viber, Telegram:

Hvis du indsætter et almindeligt mellemrum, så Hvadapp, som andre budbringere, tillader dig ikke at sende denne besked – knappen "Send" vises ikke. U + 3164 kan sendes. Resultatet er en tom besked.

VK, Facebook Messenger:

Der er den samme situation som med messengers – du kan sende tomme beskeder til private beskeder. Forresten kan du også sætte U + 3164 i VK – status-den vises som en tom linje. Hvis du lægger et almindeligt rum, slettes status, og indskriften "Indstil status" vil være synlig.

Tiktok, Instagram: Der er ingen mulighed for at bruge det skjulte rum. Begge platforme betragter det skjulte rumkarakter som et almindeligt rum.

Uenighed:

Discord giver dig mulighed for at sende tomme beskeder. På samme tid, hvis du forsøger at oprette en kanal med et tomt navn, vil Discord ikke tillade dig at gøre dette:

Ofte stillede spørgsmål

Hvis jeg sætter et usynligt tegn i Skype, vil status være "offline"?

Nej, du kan skrive enhver tekst i kontostatuslinjen (inklusive et skjult rum), status "online" eller "offline" ændres ikke.

Hvad er problemerne med null-karakteren i programmeringen?

Du bør ikke bruge dem i din kode, hvis du ikke vil ødelægge den. Hvis du skal bruge et tegn til opbevaring eller output, skal du skrive det til en variabel eller til output med en Unicode-kode. Hvorfor er det bedre ikke at bruge det? Her er et eksempel for dig:

Som du kan se, har vi erklæret en variabel, der har mellemrum i navnet, som Python forbyder. Samtidig advarer PyCharm om, at der er noget galt med denne variabel:

Ikke kun overtræder du sprogets regler, du lægger også en eger i dine hjul: for at få adgang til en variabel skal du manuelt kopiere og indsætte dens navn. Hvis du laver noget projekt for dig selv og vil komplicere dit liv, kan du bruge sådanne rum, men hvis du arbejder på et seriøst projekt, skal du ikke engang prøve at gøre dette, ellers vil du være i problemer.

Kan et specielt tegn bryde layoutet?

I teorien er dette muligt, forudsat at layoutet udføres skævt eller arver dårlige mønstre. Det er bedre ikke at bruge sådanne tegn i layoutet, hvis du ikke vil, hvis du ikke vil have alt til at bryde ned en dag.

Er det muligt at bruge disse symboler til hacking?

Teknisk set kan et af kontrolpersonerne - '\0 ' - bruges til at hacke systemet gennem et program skrevet i C. En null terminator angiver til programmet, at linjen er afsluttet, og ondsindet kode kan skrives efter terminatoren. Men dette er meget vanskeligt, for for det første skal du finde et program, der forkert behandler indgående linjer, og derefter også giver dig mulighed for at køre ondsindet kode fra en andens hukommelse. For omkring 15 år siden var det en populær måde at hacking på, nu er det mere som en museumsudstilling af hacking.