Εάν έχετε προσπαθήσει ποτέ να στείλετε ένα κενό μήνυμα στο Telegram, τότε πιθανότατα ανακαλύψατε ότι δεν αποστέλλεται ούτε το σύμβολο διαστήματος ούτε το σύμβολο νέας γραμμής (Alt + Enter) - το πεδίο εισαγωγής απλώς διαγράφεται. Ταυτόχρονα, θα μπορούσατε να δείτε ότι άλλοι άνθρωποι σας στέλνουν κυριολεκτικά έναν κενό χώρο και επιτυγχάνουν. Πού είναι η μαγεία εδώ; Εάν θέλετε μια σύντομη απάντηση-εισάγουν τον "σπασμένο" χαρακτήρα u+3164. Μπορείτε να το αντιγράψετε από τις αγκύλες και να χρησιμοποιήσετε: "ㅤㅤㅤ". Εάν θέλετε μια πιο λεπτομερή απάντηση, παρακάτω θα σας πούμε από πού προέρχεται το αόρατο κείμενο, πώς να το πάρετε και να το χρησιμοποιήσετε, γιατί δεν πρέπει να το χρησιμοποιήσετε στον κώδικα και ποιοι άλλοι χαρακτήρες υπάρχουν.

Αόρατο σύμβολο – πώς λειτουργεί;

Ας ξεκινήσουμε την εξήγηση με πίνακες χαρακτήρων και κωδικοποιήσεων. Οποιοσδήποτε υπολογιστής σε επίπεδο υλικού κατανοεί 2 χαρακτήρες: 0 και 1. Αυτό δεν είναι βολικό για τους ανθρώπους, επειδή είμαστε ακόμα πιο συνηθισμένοι σε γράμματα που διαμορφώνονται σε λέξεις, προτάσεις, παραγράφους και ούτω καθεξής. Για να δουλέψουμε με αυτά τα γράμματα χωρίς προβλήματα, Έχουμε καταλήξει σε ένα πολύ απλό σχήμα – παίρνουμε τα γράμματα με τη σειρά και τους δίνουμε μοναδικούς αριθμούς: a = 1, b = 2, c = 3 και ούτω καθεξής. Δίνουμε επίσης μοναδικούς αριθμούς σε κεφαλαία γράμματα, σημάδια (τελεία, κόμμα, ερωτηματικό κ. ο.κ.), κενά και αριθμούς – μια λίστα εμφανίζει ένα μοναδικό αναγνωριστικό που εκχωρείται σε κάθε πιθανό χαρακτήρα. Αυτή η λίστα ονομάζεται πίνακας κωδικών χαρακτήρων και ο πρώτος πίνακας κωδικών αναγνωρίζεται ήταν ASCII:

Το δεύτερο μισό είναι άδειο. Προορίζεται για περιφερειακούς χαρακτήρες. Ο ίδιος ο πίνακας είναι σαν μια πληροφορία αναφοράς. Υπάρχει επίσης μια κωδικοποίηση-ένα σύνολο οδηγιών για την αποκρυπτογράφηση αυτού του πίνακα. Οι κωδικοποιήσεις εμφανίστηκαν λόγω περιφερειακών προτύπων. Χρειάζονται για να διαβάσουν τους χαρακτήρες "σωστά". Εάν πάρουμε την κωδικοποίηση που ήταν κοινή στο CIS εκείνη την εποχή, τότε θα υπάρχει μια οδηγία σε αυτό: "για να πάρετε το γράμμα "г" χρησιμοποιήστε 8x3 στο ASCII"? αν πάρουμε την κωδικοποίηση που χρησιμοποιήθηκε στη Γερμανία εκείνη την εποχή, τότε θα γραφτεί: "για να πάρετε το γράμμα "β" χρησιμοποιήστε 8x3".



Δεδομένου ότι ήταν τρομερά ενοχλητικό λόγω του εντοπισμού σε πολλές γλώσσες, εφευρέθηκε και τυποποιήθηκε ένας νέος πίνακας χαρακτήρων, Unicode. Το Unicode μπορεί να περιέχει περισσότερους από 1.000.000 χαρακτήρες. Αυτή τη στιγμή έχουν προστεθεί περίπου 100.000 χαρακτήρες στο Unicode – έτσι, ένα άλλο 90% των κελιών είναι διαθέσιμο. Μια καθολική κωδικοποίηση UTF εφευρέθηκε για το Unicode για να διευκολύνει τους σχεδιαστές να σχεδιάζουν γραμματοσειρές (Ναι, για κάθε ξεχωριστή κωδικοποίηση, οι σχεδιαστές πρέπει να σχεδιάσουν μια ξεχωριστή γραμματοσειρά).

Αυτό είναι αρκετό υπόβαθρο-τώρα ήρθε η ώρα να μάθετε από πού προέρχεται ο αόρατος χαρακτήρας. Είναι όλα σχετικά με τα σφάλματα του Unicode: ορισμένοι ειδικοί χαρακτήρες (έλεγχος και κενό διάστημα) δεν συμπεριφέρονται όπως προβλέπεται. Η πιο ενδιαφέρουσα ομάδα σφαλμάτων για εμάς είναι ο αόρατος χαρακτήρας. Το θέμα είναι ότι το σύμβολο πρέπει να είναι ειδικό και πρέπει να εμφανίζεται ως ένα πολύ μικρό κενό διάστημα, αλλά η κωδικοποίηση το αντιλαμβάνεται ως ένα πλήρες χαρακτήρα (όπως ένα γράμμα ή ένας αριθμός) και το εμφανίζει ως ένα μεγάλο διάστημα. Μπορεί να έχετε ήδη μαντέψει πώς μπορεί να χρησιμοποιηθεί η αόρατη περιοχή ως πλήρες σημάδι–για να εισαγάγετε ένα χώρο όπου δεν παρέχεται.

Αόρατο κείμενο-πώς να αντιγράψετε και να επικολλήσετε;

Αρχικά, θα σας ενημερώσουμε για τα θλιβερά νέα: ακόμη και αυτά τα σφάλματα κωδικοποίησης διορθώνονται σταδιακά. Νωρίτερα (το 2012), ένα τέχνασμα ήταν δημοφιλές στο "Vkontakte" – ήταν δυνατό να εισαχθεί ένας χαρακτήρας ελέγχου νέας γραμμής στην κατάσταση και η κατάσταση χωρίστηκε σε 2 γραμμές. Τώρα δεν μπορείτε να το κάνετε αυτό – ο ιστότοπος επεξεργάζεται σωστά την έξοδο δεδομένων και μια τέτοια επιγραφή δεν σπάει πλέον τη συμβολοσειρά:

Εκτός από το & nsbp, τα κοινωνικά δίκτυα και οι αγγελιοφόροι έχουν κόψει όλους τους ελέγχους και τους ειδικούς χαρακτήρες – δεν μπορείτε να γυρίσετε το κείμενο ανάποδα ή να το εμφανίσετε προς τα πίσω εάν δεν παρέχεται αρχικά από τη γλώσσα. Υπάρχουν υπηρεσίες όπως https://textinvert.ru/, που σας επιτρέπουν να αλλάξετε το κείμενο, αλλά δεν το αναποδογυρίζουν, αλλά παίρνουν παρόμοια γράμματα σε άλλες γλώσσες. Απαιτεί έναν ειδικό αλγόριθμο. Είναι εξαιρετικά δύσκολο να δημιουργήσετε ένα μεγάλο κενό κείμενο τώρα (αν και είναι ακόμα δυνατό), αλλά τα αόρατα emojis και το κενό σύμβολο που έσπασε πολλές γραμματοσειρές είναι επίσης σταθερά τώρα. Το μόνο που μένει είναι να στείλουμε κενά μηνύματα όπως αυτά:

Unicode U + 3164 για την εισαγωγή ενός αόρατου χαρακτήρα

Έτσι, το πιο χρήσιμο πράγμα είναι ένας αόρατος χώρος, γνωστός και ως "κενή συμβολοσειρά". Στην πραγματικότητα, υπάρχουν 3 από αυτούς τους χαρακτήρες, εδώ είναι οι κωδικοί τους:

Κωδικός χαρακτήρα

Χαρακτήρας

U+115F

U+1160

U+3164

Για να δείτε τον χαρακτήρα, κάντε διπλό κλικ πάνω του στον πίνακα. Το "Word", παρεμπιπτόντως, υπογραμμίζει ελαφρώς το σύμβολο με γκρι χρώμα.

Όσο για τους υπόλοιπους χαρακτήρες, εξακολουθούν να υπάρχουν χαρακτήρες κενών με διευθύνσεις στην περιοχή &#8192 – &#8202, αλλά τους δοκιμάσαμε και ανακαλύψαμε ότι οι αγγελιοφόροι τους αντιλαμβάνονται ως συνηθισμένους χώρους – επομένως, δεν ενδιαφέρουν. Εάν τα χρειάζεστε ούτως ή άλλως ή θέλετε να τα δοκιμάσετε μόνοι σας σε διαφορετικές υπηρεσίες – εδώ είναι μερικά ακόμη κενά και χαρακτήρες ελέγχου:

Κωδικός χαρακτήρα

Τι σημαίνει αυτό;

Χαρακτήρας

U + 00A0

Χώρος χωρίς κενό

 

U+2003

ΕΜ διάστημα

U+2007

Σγουρός χώρος (ό, τι σημαίνει αυτό)

U+2008

Χώρος στίξης

U+2009

Στενός χώρος

U+205F

Μέσος χώρος μαθηματικών

U+3000

Ιδεογραφικός χώρος

 

Όσον αφορά τους τρεις παραπάνω χαρακτήρες, αρχικά είναι σύμβολα κράτησης θέσης για αλληλεπικαλυπτόμενους κορεατικούς χαρακτήρες. Θεωρούνται ως πλήρεις χαρακτήρες, αν και είναι πληρωτικά. Ίσως αυτή η συμπεριφορά οφείλεται στο γεγονός ότι όταν χρησιμοποιείται ένα σύμβολο κράτησης θέσης, το ιερογλυφικό δεν πρέπει να μεταφερθεί σε μια νέα γραμμή. Εάν ο χαρακτήρας θεωρείται κενό διάστημα, μπορεί να συμβεί μεταφορά (εξαρτάται από άλλους χαρακτήρες ελέγχου). Τέλος πάντων, μπορείτε να αντιγράψετε έναν κενό χαρακτήρα από τον πίνακα και να τον επικολλήσετε όπου χρειάζεστε. Αλλά πού μπορεί να εισαχθεί – ας δούμε παρακάτω.

Αόρατο κείμενο σε WhatsApp, VK, Instagram, Discord και παιχνίδια

Όπως έχουμε ήδη πει, όλες οι μεγάλες πλατφόρμες έχουν διασφαλίσει ότι ο έλεγχος, οι ειδικοί και άλλοι "μη τυποποιημένοι" χαρακτήρες κόβονται κατά τη διάρκεια της επεξεργασίας. Επομένως, το πεδίο εφαρμογής τέτοιων συμβόλων είναι εξαιρετικά περιορισμένο, αν και σε ορισμένα σημεία μπορούν ακόμα να χρησιμοποιηθούν.

WhatsApp, Viber, Τηλεγράφημα:

Εάν εισαγάγετε ένα κανονικό κενό διάστημα, τότε το WhatsApp, όπως και άλλοι αγγελιοφόροι, δεν σας επιτρέπει να στείλετε αυτό το μήνυμα – το κουμπί "Αποστολή" δεν εμφανίζεται. U+3164 μπορεί να σταλεί. Το αποτέλεσμα είναι ένα κενό μήνυμα.

VK, Facebook Messenger:

Υπάρχει η ίδια κατάσταση με τους αγγελιοφόρους – μπορείτε να στείλετε κενά μηνύματα σε ιδιωτικά μηνύματα. Παρεμπιπτόντως, μπορείτε επίσης να βάλετε το U+3164 στην κατάσταση VK – θα εμφανίζεται ως κενή γραμμή. Εάν τοποθετήσετε ένα κανονικό διάστημα, η κατάσταση θα διαγραφεί και η επιγραφή "Ρύθμιση κατάστασης" θα είναι ορατή.

TikTok, Instagram: Δεν υπάρχει επιλογή χρήσης του κρυμμένου χώρου. Και οι δύο πλατφόρμες θεωρούν τον κρυφό χώρο ως κανονικό χώρο.

Διχόνοια:

Το Discord σάς επιτρέπει να στέλνετε κενά μηνύματα. Ταυτόχρονα, εάν προσπαθήσετε να δημιουργήσετε ένα κανάλι με κενό όνομα, το Discord δεν θα σας επιτρέψει να το κάνετε αυτό:

Επικοινωνία

Εάν βάλω έναν αόρατο χαρακτήρα στο Skype, η κατάσταση θα είναι "εκτός σύνδεσης";

Όχι, μπορείτε να γράψετε οποιοδήποτε κείμενο στη γραμμή κατάστασης λογαριασμού (συμπεριλαμβανομένου ενός κρυφού χώρου), η κατάσταση "online" ή "offline" δεν θα αλλάξει.

Ποια είναι τα προβλήματα με τον μηδενικό χαρακτήρα στον προγραμματισμό;

Δεν πρέπει να τα χρησιμοποιείτε στον κώδικα σας εάν δεν θέλετε να το καταστρέψετε. Εάν πρέπει να χρησιμοποιήσετε έναν χαρακτήρα για αποθήκευση ή έξοδο, γράψτε τον σε μια μεταβλητή ή στην έξοδο με έναν κωδικό Unicode. Γιατί είναι καλύτερο να μην το χρησιμοποιήσετε; Ακολουθεί ένα παράδειγμα για εσάς:

Όπως μπορείτε να δείτε, έχουμε δηλώσει μια μεταβλητή που έχει κενά στο όνομα, την οποία απαγορεύει η Python. Ταυτόχρονα, ο PyCharm προειδοποιεί ότι κάτι δεν πάει καλά με αυτήν τη μεταβλητή:

Όχι μόνο παραβιάζετε τους κανόνες της γλώσσας, βάζετε επίσης μια ακτίνα στους τροχούς σας: για να αποκτήσετε πρόσβαση σε μια μεταβλητή, θα χρειαστεί να αντιγράψετε και να επικολλήσετε το όνομά της με μη αυτόματο τρόπο. Εάν κάνετε κάποιο έργο για τον εαυτό σας και θέλετε να περιπλέξετε τη ζωή σας, μπορείτε να χρησιμοποιήσετε τέτοιους χώρους, αλλά εάν εργάζεστε σε κάποιο σοβαρό έργο, μην προσπαθήσετε καν να το κάνετε αυτό, αλλιώς θα έχετε πρόβλημα.

Μπορεί ένας ειδικός χαρακτήρας να σπάσει τη διάταξη;

Θεωρητικά, αυτό είναι δυνατό υπό την προϋπόθεση ότι η διάταξη γίνεται στραβά ή κληρονομεί κακά μοτίβα. Είναι προτιμότερο να μην χρησιμοποιείτε τέτοιους χαρακτήρες στη διάταξη, αν δεν θέλετε αν δεν θέλετε τα πάντα να σπάσουν μια μέρα.

Είναι δυνατή η χρήση αυτών των συμβόλων για πειρατεία;

Τεχνικά, ένας από τους χαρακτήρες ελέγχου – '\0' – μπορεί να χρησιμοποιηθεί για να χαράξει το σύστημα μέσω ενός προγράμματος γραμμένο σε C.ένας μηδενικός τερματιστής υποδεικνύει στο πρόγραμμα ότι η γραμμή έχει λήξει και ο κακόβουλος κώδικας μπορεί να γραφτεί μετά τον τερματιστή. Αλλά αυτό είναι πολύ δύσκολο, γιατί πρώτον, πρέπει να βρείτε ένα πρόγραμμα που επεξεργάζεται εσφαλμένα τις εισερχόμενες γραμμές και στη συνέχεια σας επιτρέπει επίσης να εκτελέσετε κακόβουλο κώδικα από τη μνήμη κάποιου άλλου. Περίπου 15 χρόνια πριν ήταν ένας δημοφιλής τρόπος hacking, τώρα είναι περισσότερο σαν ένα μουσείο έκθεμα hacking.