Ο πίνακας ASCII: πώς 128 αριθμοί έγιναν το θεμέλιο του κειμένου
Το ASCII, συντομογραφία του American Standard Code for Information Interchange, είναι η κωδικοποίηση που έμαθε στους υπολογιστές να συμφωνούν σχετικά με το τι είναι ένα γράμμα. Δημοσιεύτηκε το 1963 και βελτιώθηκε κατά τη διάρκεια της δεκαετίας του 1960, αντιστοιχίζει κάθε βασικό χαρακτήρα του αγγλικού κειμένου, τα ψηφία και μια χούφτα σήματα ελέγχου σε αριθμούς που μια μηχανή μπορεί να αποθηκεύσει και να μεταδώσει. Όταν πατάτε το πλήκτρο για ένα κεφαλαίο A, ο υπολογιστής σας δεν αποθηκεύει ένα σχήμα, αποθηκεύει τον αριθμό 65. Το ASCII είναι ο πίνακας αναζήτησης που κάνει αυτόν τον αριθμό να σημαίνει A παντού όπου ταξιδεύει.
Το πρότυπο είναι διάσημα συμπαγές. Το ASCII είναι κωδικοποίηση 7 bit, που σημαίνει ότι κάθε χαρακτήρας χωράει σε επτά δυαδικά ψηφία και όλο το ρεπερτόριο εκτείνεται σε ακριβώς 2 στη δύναμη του 7, δηλαδή 128 διακριτά σημεία κώδικα αριθμημένα από 0 έως 127. Αυτή η οικονομία ήταν σκόπιμη. Τα πρώιμα τηλέτυπα και τα μόντεμ ήταν αργά και ακριβά, οπότε κάθε bit μετρούσε. Τα επτά bit ήταν αρκετά για να καλύψουν κεφαλαία και πεζά λατινικά γράμματα, τα δέκα ψηφία, κοινά σημεία στίξης, και τους χαρακτήρες σηματοδότησης που κρατούσαν τις συσκευές συγχρονισμένες, με ένα bit να περισσεύει που πολλά συστήματα χρησιμοποιούσαν για έλεγχο σφαλμάτων.

Δύο μισά: χαρακτήρες ελέγχου και εκτυπώσιμοι χαρακτήρες
Ο πίνακας χωρίζεται καθαρά σε δύο περιοχές. Οι κωδικοί 0 έως 31, συν τον κωδικό 127 (DEL), είναι οι χαρακτήρες ελέγχου. Αυτοί δεν εκτυπώνουν ένα σύμβολο στην οθόνη. Αντ' αυτού δίνουν εντολή σε μια συσκευή να κάνει κάτι: ο κωδικός 9 είναι οριζόντιο tab, ο κωδικός 10 είναι η τροφοδοσία γραμμής που μετακινεί σε νέα γραμμή, ο κωδικός 13 είναι η επαναφορά κεφαλής, και ο κωδικός 7 είναι το καμπανάκι που κάποτε έκανε ένα τερματικό να χτυπάει ακουστικά. Συνολικά υπάρχουν τριάντα τρεις τέτοιοι κωδικοί σηματοδότησης, και αν και πολλοί είναι πλέον ιστορικές περιέργειες, η τροφοδοσία γραμμής, η επαναφορά κεφαλής και το tab παραμένουν απαραίτητα για τον τρόπο που μορφοποιούνται τα αρχεία κειμένου σήμερα.
Οι κωδικοί 32 έως 126 είναι οι εκτυπώσιμοι χαρακτήρες, ενενήντα πέντε συνολικά. Ο κωδικός 32 είναι το διάστημα, το οποίο μετράει ως εκτυπώσιμο επειδή προωθεί τον δρομέα παρόλο που δεν εμφανίζει τίποτα. Από εκεί έχετε τα σημεία στίξης και τα σύμβολα, τα ψηφία 0 έως 9 στους κωδικούς 48 έως 57, τα κεφαλαία γράμματα A έως Z στους κωδικούς 65 έως 90, και τα πεζά γράμματα a έως z στους κωδικούς 97 έως 122. Μια όμορφη ιδιότητα προκύπτει από αυτή τη διάταξη: οι πεζές και κεφαλαίες εκδοχές του ίδιου γράμματος διαφέρουν κατά ακριβώς 32, γι' αυτό η αλλαγή ενός μόνο bit μετατρέπει την περίπτωση. Αυτές οι κανονικότητες δεν είναι τυχαίες, σχεδιάστηκαν έτσι ώστε η ταξινόμηση και η μετατροπή πεζών-κεφαλαίων να μπορούν να γίνονται με απλή αριθμητική.
Δεκαδικό, δεκαεξαδικό και δυαδικό: τρεις όψεις ενός αριθμού
Κάθε κωδικός ASCII είναι απλώς ένας αριθμός, και θα τον δείτε γραμμένο με τρεις τρόπους. Το δεκαδικό είναι η καθημερινή βάση-10 μορφή, οπότε το A είναι 65. Το δεκαεξαδικό, βάση 16, είναι η μορφή που προτιμούν οι προγραμματιστές επειδή ευθυγραμμίζεται με τα byte: το A είναι 0x41, και η εκτυπώσιμη περιοχή εκτείνεται από 0x20 έως 0x7E. Το δυαδικό, βάση 2, είναι η μορφή που πραγματικά αποθηκεύει το υλικό, οπότε το A είναι 1000001 στα επτά του bit. Ο ίδιος χαρακτήρας, τρεις σημειογραφίες, και η άνεση στη μετάβαση μεταξύ τους είναι βασική δεξιότητα όταν διαβάζετε αντίγραφα μνήμης ή κίνηση δικτύου. Αν εργάζεστε συχνά με αυτές τις μετατροπές, το ευρύτερο σύνολο πινάκων αναφοράς στο speedor.net κρατά τις αντιστοιχίσεις ένα κλικ μακριά.

Πού έχει ακόμη σημασία το ASCII
Θα ήταν λάθος να καταχωρίσετε το ASCII στην ιστορία. Είναι ζωντανό στην καθημερινή εργασία όποιου αγγίζει κώδικα. Οι γλώσσες προγραμματισμού αντιμετωπίζουν τα κυριολεκτικά συμβολοσειρών, τα αρχεία πηγαίου κώδικα και τις λέξεις-κλειδιά πρωτοκόλλου ως ASCII στο επίπεδο των byte. Πρωτόκολλα δικτύου όπως οι κεφαλίδες HTTP, το SMTP και πολλές μορφές διαμόρφωσης ορίζονται σε ASCII ώστε να παραμένουν αναγνώσιμα από ανθρώπους. Όταν μια συμβολοσειρά φαίνεται κατεστραμμένη, οι προγραμματιστές καταφεύγουν σε έναν προβολέα δεκαεξαδικών και διαβάζουν τα ακατέργαστα byte σε σχέση με τον πίνακα ASCII για να εντοπίσουν έναν παράταιρο χαρακτήρα ελέγχου ή λάθος τερματισμό γραμμής. Η κωδικοποίηση URL, το Base64 και οι ακολουθίες διαφυγής βασίζονται όλα σε τιμές ASCII. Για όποιον αποσφαλματώνει προβλήματα κωδικοποίησης, μια γρήγορη αναφορά δίπλα στα εργαλεία προγραμματιστή σας μετατρέπει ένα μυστηριώδες byte σε προφανή απάντηση.
Από το ASCII στο Unicode και το UTF-8
Το ASCII χειριζόταν τα αγγλικά υπέροχα και σχεδόν τίποτα άλλο. Ένα όριο 128 χαρακτήρων δεν μπορεί να χωρέσει τονισμένα γράμματα, κυριλλικά, κινεζικά, αραβικά ή emoji. Το Unicode απάντησε σε αυτό αναθέτοντας έναν μοναδικό αριθμό, που ονομάζεται σημείο κώδικα, σε κάθε χαρακτήρα σε κάθε σύστημα γραφής, πλέον πάνω από εκατό χιλιάδες. Καθοριστικά, το Unicode είναι ένας κατάλογος χαρακτήρων, όχι μια μορφή αποθήκευσης, οπότε χρειάζεται μια κωδικοποίηση για να μετατρέψει αυτά τα σημεία κώδικα σε byte.
Το UTF-8 είναι αυτή η κωδικοποίηση, και είναι ο λόγος που το ASCII ποτέ δεν εξαφανίστηκε πραγματικά. Το UTF-8 χρησιμοποιεί ένα έως τέσσερα byte ανά χαρακτήρα, και σχεδιάστηκε έτσι ώστε τα σημεία κώδικα 0 έως 127, ολόκληρη η περιοχή ASCII, να αποθηκεύονται σε ένα μόνο byte πανομοιότυπο με το απλό ASCII. Αυτό κάνει το UTF-8 τέλεια συμβατό προς τα πίσω: κάθε έγκυρο αρχείο ASCII είναι ήδη έγκυρο αρχείο UTF-8. Χαρακτήρες πάνω από το 127 χρησιμοποιούν επιπλέον byte. Αυτή η κομψή συμβατότητα είναι μεγάλος λόγος που το UTF-8 τροφοδοτεί πλέον τη συντριπτική πλειονότητα του ιστού. Με λίγα λόγια, το ASCII είναι ο αρχικός πυρήνας 128 χαρακτήρων, το Unicode είναι ο καθολικός κατάλογος που τον περιέχει, και το UTF-8 είναι η κωδικοποίηση που μεταφέρει και τα δύο διατηρώντας το κείμενο ASCII αμετάβλητο byte προς byte.
Συχνές ερωτήσεις
Πόσοι χαρακτήρες υπάρχουν στον πίνακα ASCII;
Το τυπικό ASCII ορίζει 128 χαρακτήρες, αριθμημένους από 0 έως 127. Από αυτούς, 95 είναι εκτυπώσιμοι χαρακτήρες συμπεριλαμβανομένου του διαστήματος, και 33 είναι χαρακτήρες ελέγχου που σηματοδοτούν συσκευές αντί να εκτυπώνουν σύμβολο.
Ποια είναι η διαφορά μεταξύ χαρακτήρων ελέγχου και εκτυπώσιμων χαρακτήρων;
Οι χαρακτήρες ελέγχου, κωδικοί 0 έως 31 συν τον 127, δίνουν εντολή σε μια συσκευή να κάνει κάτι όπως τροφοδοσία γραμμής ή tab και δεν παράγουν ορατό σύμβολο. Οι εκτυπώσιμοι χαρακτήρες, κωδικοί 32 έως 126, είναι τα γράμματα, τα ψηφία, τα σημεία στίξης και το διάστημα που πραγματικά βλέπετε στην οθόνη.
Γιατί το ASCII είναι κωδικοποίηση 7 bit;
Τα επτά bit δίνουν ακριβώς 128 συνδυασμούς, που ήταν αρκετοί για να καλύψουν αγγλικά γράμματα, ψηφία, σημεία στίξης και σήματα ελέγχου, εξοικονομώντας παράλληλα εύρος ζώνης στο αργό πρώιμο υλικό. Το όγδοο bit σε ένα byte συχνά προοριζόταν για έλεγχο σφαλμάτων ισοτιμίας.
Ποιος είναι ο κωδικός ASCII για το γράμμα A;
Το κεφαλαίο A είναι δεκαδικό 65, δεκαεξαδικό 0x41, και δυαδικό 1000001. Το πεζό a είναι δεκαδικό 97, που είναι ακριβώς 32 μονάδες υψηλότερα, ένα ενσωματωμένο μοτίβο που επιτρέπει τη μετατροπή πεζών-κεφαλαίων με απλή αριθμητική.
Είναι το ASCII το ίδιο με το Unicode;
Όχι. Το ASCII καλύπτει 128 χαρακτήρες, ενώ το Unicode καταλογογραφεί πάνω από εκατό χιλιάδες σε κάθε σύστημα γραφής. Το ASCII είναι ουσιαστικά τα πρώτα 128 σημεία κώδικα του Unicode, οπότε είναι ένα μικρό υποσύνολο του ευρύτερου προτύπου.
Πώς σχετίζεται το UTF-8 με το ASCII;
Το UTF-8 είναι μια κωδικοποίηση για το Unicode που αποθηκεύει τα σημεία κώδικα 0 έως 127 σε ένα μόνο byte πανομοιότυπο με το ASCII. Αυτό κάνει κάθε αρχείο ASCII έγκυρο αρχείο UTF-8, γι' αυτό το UTF-8 είναι συμβατό προς τα πίσω και κυριαρχεί στον σύγχρονο ιστό.
