Μια επεξήγηση της κωδικοποίησης χαρακτήρων Unicode

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

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

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

Όλες οι κωδικοποιήσεις χαρακτήρων είναι ανάθεση ενός αριθμού σε κάθε χαρακτήρα που μπορεί να χρησιμοποιηθεί. Θα μπορούσατε να κάνετε μια κωδικοποίηση χαρακτήρων αυτήν τη στιγμή.

Για παράδειγμα, θα μπορούσα να πω ότι η επιστολή ΕΝΑ γίνεται ο αριθμός 13, a = 14, 1 = 33, # = 123 και ούτω καθεξής.

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

instagram viewer

Τι είναι το Unicode;

ASCII (αμερικανικό πρότυπο κώδικα ανταλλαγής πληροφοριών) έγινε το πρώτο εκτεταμένο σύστημα κωδικοποίησης. Ωστόσο, περιορίζεται σε μόνο 128 ορισμούς χαρακτήρων. Αυτό είναι καλό για τους πιο συνηθισμένους αγγλικούς χαρακτήρες, αριθμούς και σημεία στίξης, αλλά είναι λίγο περιοριστικός για τον υπόλοιπο κόσμο.

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

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

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

Αυτές τις μέρες, το πρότυπο Unicode ορίζει τιμές για πάνω από 128.000 χαρακτήρες και μπορεί να δει στο Unicode Consortium. Έχει διάφορες μορφές κωδικοποίησης χαρακτήρων:

  • UTF-8: Χρησιμοποιεί μόνο ένα byte (8 bits) για την κωδικοποίηση αγγλικών χαρακτήρων. Μπορεί να χρησιμοποιήσει μια ακολουθία bytes για να κωδικοποιήσει άλλους χαρακτήρες. Το UTF-8 χρησιμοποιείται ευρέως σε συστήματα ηλεκτρονικού ταχυδρομείου και στο διαδίκτυο.
  • UTF-16: Χρησιμοποιεί δύο byte (16 bits) για να κωδικοποιήσει τους συνηθέστερα χρησιμοποιούμενους χαρακτήρες. Εάν χρειάζεται, οι επιπλέον χαρακτήρες μπορούν να αναπαρασταθούν από ένα ζευγάρι αριθμών 16-bit.
  • UTF-32: Χρησιμοποιεί τέσσερα bytes (32 bits) για την κωδικοποίηση των χαρακτήρων. Αποδείχθηκε ότι καθώς το πρότυπο Unicode αυξήθηκε, ένας αριθμός 16-bit είναι πολύ μικρός για να αναπαριστά όλους τους χαρακτήρες. Το UTF-32 είναι ικανό να αντιπροσωπεύει κάθε χαρακτήρα Unicode ως έναν αριθμό.

Σημείωση: Το UTF σημαίνει Unicode Transformation Unit.

Κωδικοί σημεία

Ένα σημείο κώδικα είναι η τιμή που δίνει ένας χαρακτήρας στο πρότυπο Unicode. Οι τιμές σύμφωνα με το Unicode γράφονται ως δεκαεξαδικοί αριθμοί και έχουν ένα πρόθεμα U +.

Για παράδειγμα, για να κωδικοποιήσουμε τους χαρακτήρες που εξετάσαμε νωρίτερα:

  • ΕΝΑ είναι U + 0041
  • ένα είναι U + 0061
  • 1 είναι U + 0031
  • # είναι U + 0023

Αυτά τα σημεία κώδικα χωρίζονται σε 17 διαφορετικά τμήματα που ονομάζονται επίπεδα, που προσδιορίζονται από τους αριθμούς 0 έως 16. Κάθε επίπεδο διαθέτει 65.536 σημεία κωδικού. Το πρώτο επίπεδο, 0, κρατά τους συνηθέστερα χρησιμοποιούμενους χαρακτήρες και είναι γνωστό ως το βασικό πολύγλωσσο επίπεδο (BMP).

Μονάδες κώδικα

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

Εξετάστε το UTF-16 ως παράδειγμα. Κάθε αριθμός 16-bit είναι μια μονάδα κώδικα. Οι μονάδες κώδικα μπορούν να μετατραπούν σε σημεία κώδικα. Για παράδειγμα, το σύμβολο επίπεδης σημείωσης ♭ έχει ένα σημείο κώδικα U + 1D160 και ζει στο δεύτερο επίπεδο του προτύπου Unicode (Συμπληρωματικό ιδεογραφικό επίπεδο). Θα κωδικοποιείται χρησιμοποιώντας τον συνδυασμό των μονάδων κωδίκων 16-bit U + D834 και U + DD60.

Για την BMP, οι τιμές των κωδικών σημείων και των κωδικών μονάδων είναι ίδιες. Αυτό επιτρέπει μια συντόμευση για το UTF-16 που εξοικονομεί μεγάλο χώρο αποθήκευσης. Χρειάζεται μόνο να χρησιμοποιήσει έναν αριθμό 16-bit για να αντιπροσωπεύει αυτούς τους χαρακτήρες.

Πώς χρησιμοποιεί η Java το Unicode;

Ιάβα δημιουργήθηκε την εποχή κατά την οποία το πρότυπο Unicode είχε τιμές που ορίζονται για ένα πολύ μικρότερο σύνολο χαρακτήρων. Τότε, θεωρήθηκε ότι 16-bit θα ήταν περισσότερο από αρκετό για να κωδικοποιήσει όλους τους χαρακτήρες που θα χρειαζόταν ποτέ. Με αυτό κατά νου, η Java σχεδιάστηκε για να χρησιμοποιεί το UTF-16. Ο τύπος δεδομένων χαρακτήρων χρησιμοποιήθηκε αρχικά για να αντιπροσωπεύσει ένα σημείο κώδικα Unicode 16 bit.

Από το Java SE v5.0, ο char αντιπροσωπεύει μια μονάδα κώδικα. Εξαρτάται από το γεγονός ότι αντιπροσωπεύουν χαρακτήρες που βρίσκονται στο βασικό πολύγλωσσο επίπεδο επειδή η τιμή της μονάδας κώδικα είναι ίδια με το σημείο κωδικού. Ωστόσο, αυτό σημαίνει ότι για τους χαρακτήρες στα άλλα αεροπλάνα χρειάζονται δύο χαρακτήρες.

Το σημαντικό πράγμα που πρέπει να θυμάστε είναι ότι ένας τύπος δεδομένων τύπου single char δεν μπορεί πλέον να αντιπροσωπεύει όλους τους χαρακτήρες Unicode.

instagram story viewer