ASCII και Unicode: τι είναι και σε τι χρησιμεύουν

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

Ενημερώθηκε:

Τι είναι η κωδικοποίηση χαρακτήρων

Μια κωδικοποίηση είναι μια συμφωνία: «ο αριθμός 65 σημαίνει το γράμμα A». Όταν γράφετε ένα κείμενο, το πρόγραμμα αποθηκεύει αυτούς τους αριθμούς· όταν το ανοίξει κάποιος άλλος, το πρόγραμμά του τους μεταφράζει ξανά σε γράμματα με την ίδια συμφωνία. Αν οι δύο δεν χρησιμοποιούν τον ίδιο πίνακα, το κείμενο βγαίνει λάθος.

Πρέπει να ξεχωρίσετε δύο ιδέες. Η μία είναι το σύνολο χαρακτήρων, η λίστα με το ποιοι αριθμοί αντιστοιχούν σε ποια σύμβολα. Η άλλη είναι πώς αυτοί οι αριθμοί αποθηκεύονται σε byte. Στο ASCII τα δύο συμπίπτουν με τετριμμένο τρόπο· στο Unicode όχι, και εκεί μπαίνει το UTF-8.

ASCII: 128 χαρακτήρες των 7 bit

Το ASCII (αρχικά του American Standard Code for Information Interchange) τυποποιήθηκε τη δεκαετία του 1960. Χρησιμοποιεί 7 bit, δηλαδή 2 στη δύναμη 7 = 128 κωδικούς, από 0 έως 127. Από αυτούς, 33 είναι χαρακτήρες ελέγχου (από 0 έως 31 και το 127) και 95 είναι εκτυπώσιμοι (από 32 έως 126, συμπεριλαμβανομένου του κενού).

Δεν περιλαμβάνει γράμματα με τόνο, ούτε το ñ, ούτε το σύμβολο του ευρώ: σχεδιάστηκε για τα αγγλικά. Αυτό εξηγεί γιατί χρειάστηκαν αργότερα άλλοι πίνακες.

Οι κωδικοί που θα συναντήσετε συχνότερα. Το διάστημα (32) θεωρείται εκτυπώσιμο παρόλο που δεν φαίνεται.
Χαρακτήρας ελέγχουΔεκαδικόΔεκαεξαδικόΔυαδικό (7 bit)Σε τι χρησιμεύει
Κενός (NUL)0000000000Σημαίνει το τέλος μιας συμβολοσειράς σε διάφορες γλώσσες
Οριζόντια στηλοθέτηση (TAB)9090001001Πηγαίνει στην επόμενη στηλοθέτηση
Αλλαγή γραμμής (LF)100A0001010Κατεβαίνει στην επόμενη γραμμή
Επιστροφή carriage (CR)130D0001101Επιστρέφει στην αρχή της γραμμής
Escape (ESC)271B0011011Ξεκινά ακολουθίες ελέγχου
Διάστημα32200100000Ο πρώτος εκτυπώσιμος χαρακτήρας
Διαγραφή (DEL)1277F1111111Διαγράφει τον χαρακτήρα

Σχέσεις που αξίζει να θυμάστε

Ο πίνακας δεν είναι ταξινομημένος στην τύχη. Με λίγες κανονικότητες μπορείτε να διαβάζετε κωδικούς απέξω.

Τέλος γραμμής: LF, CR και CRLF

Μια αλλαγή γραμμής φαίνεται κάτι απλό, αλλά γράφεται διαφορετικά ανάλογα με το σύστημα. Το Unix, το Linux και το macOS χρησιμοποιούν έναν μόνο χαρακτήρα, το LF (10). Τα Windows χρησιμοποιούν δύο διαδοχικούς, CR και LF (13 και 10), γνωστούς ως CRLF. Οι παλιοί τηλεγραφικοί εκτυπωτές χρειάζονταν δύο διαφορετικές εντολές: να επιστρέψει το carriage στην αρχή και να προχωρήσει το χαρτί μία γραμμή.

Αυτή η διαφορά είναι η αιτία για αρχεία που φαίνονται όλα σε μία γραμμή σε έναν βασικό επεξεργαστή, ή με ένα περίεργο σύμβολο στο τέλος κάθε σειράς. Αν ψάχνετε ποιον κωδικό έχει καθένα, γράψτε LF ή CR στην αναζήτηση του πίνακα ASCII.

Το «εκτεταμένο ASCII» δεν είναι πρότυπο

Επειδή ένα byte έχει 8 bit και το ASCII χρησιμοποιεί μόνο 7, περίσσευαν 128 ελεύθεροι κωδικοί (από 128 έως 255) και κάθε κατασκευαστής και περιοχή τους γέμισε με τον δικό της τρόπο. Αυτό είναι γνωστό ως «εκτεταμένο ASCII», αλλά δεν υπάρχει ένας μοναδικός πίνακας: υπάρχουν πολλοί, που λέγονται σελίδες κωδικών. Δύο από τις πιο γνωστές είναι η Latin-1 (ISO-8859-1), όπου το é είναι ο κωδικός 233, και η Windows-1252, παρόμοια αλλά με διαφορές στους κωδικούς 128 έως 159 (εκεί βρίσκεται, για παράδειγμα, το ευρώ).

Το πρόβλημα είναι ότι ο κωδικός 233 σημαίνει «é» σε έναν πίνακα και κάτι άλλο σε έναν άλλο. Ένα κείμενο γραμμένο με έναν πίνακα και διαβασμένο με άλλον έδειχνε σκουπίδια. Το Unicode γεννήθηκε για να βάλει τέλος σε αυτό το χάος.

Unicode και UTF-8

Το Unicode αντιστοιχίζει έναν μοναδικό αριθμό, που λέγεται σημείο κώδικα, σε κάθε χαρακτήρα σχεδόν όλων των συστημάτων γραφής του κόσμου, καθώς και σε σύμβολα και emoji. Σήμερα έχει πάνω από 150.000 χαρακτήρες. Γράφεται με το πρόθεμα U+ και σε δεκαεξαδικό: το «A» είναι U+0041, το «ñ» είναι U+00F1, το ευρώ είναι U+20AC και το emoji του χαμογελαστού προσώπου είναι U+1F600. Τα πρώτα 128 σημεία κώδικα είναι ακριβώς αυτά του ASCII.

Το UTF-8 είναι ο πιο διαδεδομένος τρόπος αποθήκευσης αυτών των αριθμών σε byte, και χρησιμοποιεί από 1 έως 4 ανάλογα με τον χαρακτήρα. Οι 128 του ASCII καταλαμβάνουν ένα μόνο byte, πανομοιότυπο με το παλιό, άρα ένα κείμενο ASCII είναι και έγκυρο κείμενο UTF-8. Οι υπόλοιποι καταλαμβάνουν περισσότερα byte.

Όσο πιο μακριά από το ASCII, τόσα περισσότερα byte καταλαμβάνει ο χαρακτήρας.
ΧαρακτήραςΣημείο κώδικαByte σε UTF-8Byte (δεκαεξαδικό)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Γιατί εμφανίζεται «Ã±» αντί για «ñ»

Είναι το πιο συχνό σφάλμα και έχει ακριβή εξήγηση. Το ñ σε UTF-8 είναι δύο byte: C3 και B1. Αν ένα πρόγραμμα πιστεύει ότι το κείμενο είναι σε Latin-1, διαβάζει κάθε byte ως έναν χαρακτήρα: το C3 είναι «Ã» και το B1 είναι «±». Αποτέλεσμα: «Ã±». Το ίδιο συμβαίνει με το «é», που φαίνεται ως «Ã©», και με το «canción», που εμφανίζεται ως «canción».

Η λύση σχεδόν πάντα είναι να πείτε στο πρόγραμμα να ανοίξει το αρχείο ως UTF-8 (σε έναν επεξεργαστή κειμένου ή στις ρυθμίσεις εισαγωγής ενός υπολογιστικού φύλλου). Όταν συμβαίνει το αντίθετο, κείμενο σε Latin-1 διαβασμένο ως UTF-8, συνήθως εμφανίζονται ρόμβοι με ένα ερωτηματικό, επειδή αυτά τα μεμονωμένα byte δεν σχηματίζουν έγκυρες ακολουθίες UTF-8.

Πώς να χρησιμοποιήσετε τον πίνακα ASCII και τον μετατροπέα

Το εργαλείο «Πίνακας ASCII» δείχνει τους 128 χαρακτήρες με τον κωδικό τους σε δεκαδικό, δεκαεξαδικό, οκταδικό και δυαδικό, και το όνομα αυτών του ελέγχου.

  1. Γράψτε στην αναζήτηση έναν χαρακτήρα, έναν κωδικό ή το όνομα ενός χαρακτήρα ελέγχου (για παράδειγμα A, 65, 41 ή LF) για να βρείτε τη γραμμή του.
  2. Χρησιμοποιήστε τα κουμπιά φίλτρου (Έλεγχος, Ψηφία, Κεφαλαία, Πεζά, Σύμβολα) για να δείτε μόνο μία ομάδα.
  3. Για μετατροπή, γράψτε ένα κείμενο στο «Κείμενο» και επιλέξτε τη μορφή (δεκαδικός, δεκαεξαδικός, οκταδικός ή δυαδικός): από κάτω εμφανίζονται οι κωδικοί. Το «Hola» δίνει 72 111 108 97 σε δεκαδικό και 48 6F 6C 61 σε δεκαεξαδικό.
  4. Μπορείτε να το κάνετε και αντίστροφα: επικολλήστε κωδικούς χωρισμένους με κενά ή κόμματα στο «Κωδικοί» και σχηματίζεται το κείμενο. Στο δεκαεξαδικό γίνονται δεκτά προθέματα όπως 0x41.

Αν το κείμενο έχει χαρακτήρες που δεν είναι ASCII, όπως το ñ, το εργαλείο το επισημαίνει και δείχνει τον κωδικό Unicode του. Για να δείτε τα πραγματικά byte σε UTF-8 χρησιμοποιήστε το «Κείμενο σε δυαδικό»: το ñ δίνει 11000011 10110001, δύο byte των 8 bit. Τα όρια: ο πίνακας δείχνει μόνο το βασικό ASCII, όχι το εκτεταμένο, και όλα υπολογίζονται στο πρόγραμμα περιήγησής σας χωρίς να στέλνεται το κείμενο σε κανέναν διακομιστή.

Συχνές ερωτήσεις

Πόσους χαρακτήρες έχει το ASCII;

128, με κωδικούς από 0 έως 127 και 7 bit ο καθένας. Από αυτούς, 33 είναι χαρακτήρες ελέγχου και 95 είναι εκτυπώσιμοι, μετρώντας το κενό.

Ποιος είναι ο κωδικός ASCII του γράμματος A και του a;

Το «A» είναι 65 (41 σε δεκαεξαδικό, 01000001 σε δυαδικό) και το «a» είναι 97 (61 σε δεκαεξαδικό, 01100001 σε δυαδικό). Διαφέρουν πάντα κατά 32.

Ποια είναι η διαφορά ανάμεσα στο ASCII και στο Unicode;

Το ASCII έχει 128 χαρακτήρες σχεδιασμένους για τα αγγλικά. Το Unicode έχει πάνω από 150.000, από σχεδόν όλες τις γλώσσες και τα emoji, και οι πρώτοι 128 είναι ίδιοι με του ASCII.

Τι είναι το UTF-8;

Είναι ο πιο διαδεδομένος τρόπος αποθήκευσης κειμένου Unicode σε byte. Χρησιμοποιεί 1 έως 4 byte ανά χαρακτήρα: οι χαρακτήρες του ASCII καταλαμβάνουν ένα, ένα ñ καταλαμβάνει δύο και ένα emoji τέσσερα.

Γιατί το κείμενό μου δείχνει «Ã±» ή «Ã©»;

Επειδή ένα κείμενο αποθηκευμένο σε UTF-8 διαβάζεται ως Latin-1. Ανοίξτε το αρχείο δηλώνοντας την κωδικοποίηση UTF-8 και διορθώνεται.