Se hai mai provato a inviare un messaggio vuoto in Telegram, molto probabilmente hai scoperto che non vengono inviati né il segno dello spazio né il segno di nuova riga (Alt + Invio) - il campo di input viene semplicemente cancellato. Allo stesso tempo, potresti vedere che altre persone ti mandano letteralmente uno spazio vuoto e ci riescono. Dov'è la magia qui? Se vuoi una risposta breve, inseriscono il carattere" rotto " u+3164. Puoi copiarlo dalle parentesi e usare:"ㅤㅤㅤ". Se vuoi una risposta più dettagliata, di seguito ti diremo da dove viene il testo invisibile, come ottenerlo e usarlo, perché non dovresti usarlo nel codice e quali altri personaggi ci sono.
Simbolo invisibile-come funziona?
Iniziamo la spiegazione con tabelle di caratteri e codifiche. Qualsiasi computer a livello hardware comprende 2 caratteri: 0 e 1. Questo non è conveniente per le persone, perché siamo ancora più abituati alle lettere che si formano in parole, frasi, paragrafi e così via. Per lavorare con queste lettere senza problemi, abbiamo escogitato uno schema molto semplice: prendiamo le lettere in ordine e diamo loro numeri unici: a = 1, b = 2, c = 3 e così via. Diamo anche numeri unici a lettere maiuscole, segni (punto, virgola, punto interrogativo e così via), spazi bianchi e numeri – un elenco incombe un identificatore univoco che viene assegnato a ciascun carattere possibile. Questo elenco è chiamato la tabella dei codici dei caratteri, e la prima tabella dei codici è riconosciuto era ASCII:
La seconda metà è vuota. È destinato a personaggi regionali. La tabella stessa è come un'informazione di riferimento. C'è anche una codifica – una serie di istruzioni per decifrare questa tabella. Le codifiche sono apparse a causa degli standard regionali. Sono necessari per leggere i caratteri "correttamente". Se prendiamo la codifica che era comune nella CSI in quel momento, allora ci sarà un'istruzione in essa: "Per ottenere la lettera "г" usa 8x3 in ASCII"; se prendiamo la codifica che è stata usata in Germania in quel momento, allora sarà scritto: "Per ottenere la lettera "β" usa 8x3".
Poiché era terribilmente scomodo a causa della localizzazione in diverse lingue, una nuova tabella di caratteri, Unicode, è stata inventata e standardizzata. Unicode può contenere più di 1.000.000 di caratteri. Al momento sono stati aggiunti circa 100.000 caratteri a Unicode, quindi è disponibile un altro 90% di celle. Una codifica UTF universale è stata inventata per Unicode per rendere più facile per i progettisti disegnare font (sì, per ogni codifica separata, i progettisti devono disegnare un font separato).
Questo è abbastanza sfondo-ora è il momento di scoprire da dove viene il personaggio invisibile. Riguarda i bug di Unicode: alcuni caratteri speciali (di controllo e spazi bianchi) non si comportano come previsto. Il gruppo più interessante di bug per noi è il personaggio invisibile. Il punto è che il segno dovrebbe essere speciale e dovrebbe essere visualizzato come uno spazio bianco molto piccolo, ma la codifica lo percepisce come un carattere a tutti gli effetti (come una lettera o un numero) e lo visualizza come un grande spazio. Potresti aver già intuito come può essere utilizzata l'area invisibile come segno a tutti gli effetti–per inserire uno spazio in cui non è fornito.
Testo invisibile - come copiare e incollare?
Per cominciare, ti informeremo della triste notizia: anche questi bug di codifica vengono gradualmente corretti. In precedenza (nel 2012), un trucco era popolare in “Vkontakte”: era possibile inserire un carattere di controllo di nuova riga nello stato e lo stato era diviso in 2 righe. Ora non puoi farlo: il sito elabora correttamente l'output dei dati e tale iscrizione non interrompe più la stringa:
Oltre a & nsbp, social network e messaggeri hanno tagliato tutti i caratteri di controllo e speciali – non è possibile capovolgere il testo o visualizzarlo all'indietro se non è inizialmente fornito dalla lingua. Ci sono servizi come https://textinvert.ru/, che ti permettono di cambiare il testo, ma non lo capovolgono, ma raccolgono lettere simili in altre lingue. Richiede un algoritmo speciale. È estremamente difficile creare un testo vuoto di grandi dimensioni ora (anche se è ancora possibile), ma gli emoji invisibili e il segno di set vuoto che ha rotto molti font sono anche corretti ora. Non resta che inviare messaggi vuoti come questi:
Unicode U+3164 per l'inserimento di un carattere invisibile
Quindi, la cosa più utile è uno spazio invisibile, ovvero una "stringa vuota". In effetti, ci sono 3 di questi personaggi, ecco i loro codici:
Codice del personaggio |
Carattere |
U + 115F |
ᅟ |
U + 1160 |
ᅠ |
U + 3164 |
ㅤ |
Per vedere il personaggio, fai doppio clic su di esso nella tabella. "Word", a proposito, evidenzia leggermente il simbolo in grigio.
Per quanto riguarda il resto dei personaggi, ci sono ancora caratteri spazi bianchi con indirizzi nella zona di   –  , ma li abbiamo testati e abbiamo scoperto che i messaggeri li percepiscono come spazi ordinari – pertanto, essi non sono di interesse. Se ne hai bisogno comunque o vuoi testarli da solo in diversi servizi, ecco alcuni altri spazi e caratteri di controllo:
Codice del personaggio |
Cosa significa? |
Carattere |
U + 00A0 |
Spazio senza spazio |
|
U + 2003 |
Spazio Em |
|
U + 2007 |
Spazio riccio (qualunque cosa significhi) |
|
U + 2008 |
Spazio di punteggiatura |
|
U + 2009 |
Spazio ristretto |
|
U + 205F |
Spazio matematico medio |
|
U + 3000 |
Spazio ideografico |
|
Per quanto riguarda i tre caratteri precedenti, inizialmente sono segnaposto per la sovrapposizione di caratteri coreani. Sono considerati personaggi a tutti gli effetti, sebbene siano riempitivi. Forse questo comportamento è dovuto al fatto che quando viene utilizzato un segnaposto, il geroglifico non deve essere trasferito su una nuova riga. Se il carattere è considerato uno spazio bianco, può verificarsi un trasferimento (dipende da altri caratteri di controllo). Ad ogni modo, puoi copiare un carattere vuoto dalla tabella e incollarlo ovunque tu abbia bisogno. Ma dove può essere inserito-vediamo sotto.
Testo invisibile in WhatsApp, VK, Instagram, Discord e giochi
Come abbiamo già detto, tutte le principali piattaforme hanno fatto in modo che i caratteri di controllo, speciali e altri "non standard" vengano tagliati durante l'elaborazione. Pertanto, l'ambito di applicazione di tali simboli è estremamente limitato, sebbene in alcuni punti possano ancora essere utilizzati.
WhatsApp, Viber, Telegram:
Se inserisci uno spazio bianco normale, WhatsApp, come altri messenger, non ti consente di inviare questo messaggio – il pulsante "Invia" non viene visualizzato. U+3164 può essere inviato. Il risultato è un messaggio vuoto.
VK, Facebook Messenger:
C'è la stessa situazione con i messaggeri: puoi inviare messaggi vuoti a messaggi privati. A proposito, puoi anche mettere U+3164 nello stato VK-verrà visualizzato come una riga vuota. Se si inserisce uno spazio regolare, lo stato verrà eliminato e la scritta "Imposta stato" sarà visibile.
TikTok, Instagram: Non è possibile utilizzare lo spazio nascosto. Entrambe le piattaforme considerano il carattere spazio nascosto come uno spazio regolare.
Discordia:
Discord consente di inviare messaggi vuoti. Allo stesso tempo, se provi a creare un canale con un nome vuoto, Discord non ti permetterà di farlo:
DOMANDE FREQUENTI
Se inserisco un carattere invisibile in Skype, lo stato sarà "offline"?
No, puoi scrivere qualsiasi testo nella barra di stato dell'account (incluso uno spazio nascosto), lo stato “online” o “offline” non cambierà.
Quali sono i problemi con il carattere null nella programmazione?
Non dovresti usarli nel tuo codice se non vuoi rovinarlo. Se è necessario utilizzare un carattere per l'archiviazione o l'output, scriverlo su una variabile o sull'output con un codice Unicode. Perché è meglio non usarlo? Ecco un esempio per te:
Come puoi vedere, abbiamo dichiarato una variabile che ha spazi nel nome, che Python proibisce. Allo stesso tempo, PyCharm avverte che qualcosa non va con questa variabile:
Non solo stai violando le regole della lingua, stai anche mettendo un raggio nelle tue ruote: per accedere a una variabile, dovrai copiare e incollare manualmente il suo nome. Se stai facendo un progetto per te stesso e vuoi complicarti la vita, puoi usare tali spazi, ma se stai lavorando a un progetto serio, non provare nemmeno a farlo, altrimenti sarai nei guai.
Un carattere speciale può rompere il layout?
In teoria, questo è possibile a condizione che il layout sia fatto in modo storto o erediti modelli errati. È meglio non usare tali caratteri nel layout, se non vuoi se non vuoi che tutto si rompa un giorno.
È possibile utilizzare questi simboli per l'hacking?
Tecnicamente, uno dei caratteri di controllo – ’ \0 ' - può essere utilizzato per hackerare il sistema attraverso un programma scritto in C. Un terminatore nullo indica al programma che la linea è terminata e il codice dannoso può essere scritto dopo il terminatore. Ma questo è molto difficile, perché in primo luogo, è necessario trovare un programma che elabora in modo errato le linee in arrivo e quindi consente anche di eseguire codice dannoso dalla memoria di qualcun altro. Circa 15 anni fa era un modo popolare di hacking, ora è più simile a una mostra museale di hacking.
DOMANDE FREQUENTI
Se inserisco un carattere invisibile in Skype, lo stato sarà "offline"?
No, puoi scrivere qualsiasi testo nella barra di stato dell'account (incluso uno spazio nascosto), lo stato “online” o “offline” non cambierà.
Quali sono i problemi con il carattere null nella programmazione?
Non dovresti usarli nel tuo codice se non vuoi rovinarlo. Se è necessario utilizzare un carattere per l'archiviazione o l'output, scriverlo su una variabile o sull'output con un codice Unicode. Perché è meglio non usarlo? Ecco un esempio per te:
Come puoi vedere, abbiamo dichiarato una variabile che ha spazi nel nome, che Python proibisce. Allo stesso tempo, PyCharm avverte che qualcosa non va con questa variabile:
Non solo stai violando le regole della lingua, stai anche mettendo un raggio nelle tue ruote: per accedere a una variabile, dovrai copiare e incollare manualmente il suo nome. Se stai facendo un progetto per te stesso e vuoi complicarti la vita, puoi usare tali spazi, ma se stai lavorando a un progetto serio, non provare nemmeno a farlo, altrimenti sarai nei guai.
Un carattere speciale può rompere il layout?
In teoria, questo è possibile a condizione che il layout sia fatto in modo storto o erediti modelli errati. È meglio non usare tali caratteri nel layout, se non vuoi se non vuoi che tutto si rompa un giorno.
È possibile utilizzare questi simboli per l'hacking?
Tecnicamente, uno dei caratteri di controllo – ’ \0 ' - può essere utilizzato per hackerare il sistema attraverso un programma scritto in C. Un terminatore nullo indica al programma che la linea è terminata e il codice dannoso può essere scritto dopo il terminatore. Ma questo è molto difficile, perché in primo luogo, è necessario trovare un programma che elabora in modo errato le linee in arrivo e quindi consente anche di eseguire codice dannoso dalla memoria di qualcun altro. Circa 15 anni fa era un modo popolare di hacking, ora è più simile a una mostra museale di hacking.