1.3.5 Κωδικοποίηση αριθμητικών και αλφαριθμητικών δεδομένων

Οι υπολογιστές, όπως και όλα τα ψηφιακά συστήματα, δέχονται δεδομένα αλλά και τα αναπαράγουν µε τη μορφή μιας σειράς δυαδικών ψηφίων (bits) 0 ή 1. Επομένως οποιαδήποτε πληροφορία θέλουμε να εισάγουμε στον υπολογιστή είμαστε υποχρεωμένοι να τη μετατρέπουμε (κωδικοποιούμε) σε δυαδική πληροφορία, δηλαδή, με τη μορφή μιας μοναδικής ακολουθίας δυαδικών ψηφίων 0 και 1.

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

Έτσι δημιουργήθηκε ο δυαδικός κώδικας επικοινωνίας του ανθρώπου με τη μηχανή.

Κατηγορίες δυαδικών κωδικών:

Κώδικες αριθμών (αναπαράσταση αριθμών στον υπολογιστή)

Κώδικες χαρακτήρων (αναπαράσταση χαρακτήρων στον υπολογιστή).

Κώδικας αριθμών BCD (Binary Coded Decimal)

Ο κώδικας BCD είναι ένας κώδικας παράστασης των 10 ψηφίων του δεκαδικού συστήματος με έναν δυαδικό κώδικα, όπου κάθε δεκαδικό ψηφίο αντιπροσωπεύεται από μια τετράδα δυαδικών ψηφίων. Όπως γνωρίζουμε, τα δεκαδικά ψηφία είναι τα 0, 1, 2, …, 9.

Για την κωδικοποίηση των δέκα ψηφίων μέσω του δυαδικού συστήματος απαιτούνται τόσα δυαδικά ψηφία, έτσι ώστε ο συνδυασμός αυτών να μπορεί να δώσει 10 διαφορετικούς συνδυασμούς.

Με 3 bits μπορούμε να έχουμε 23 = 8 μοναδικούς συνδυασμούς, άρα θα χρησιμοποιήσουμε υποχρεωτικά 4 bits αφού μπορούμε να έχουμε 24=16 διαφορετικούς δυαδικούς συνδυασμούς, από τους οποίους όμως χρειαζόμαστε µόνο τους δέκα. Οι υπόλοιποι 6 δεν χρησιμοποιούνται, αφού δεν υπάρχει γι’ αυτούς αντίστοιχο ψηφίο.

Το κάθε bit της τετράδας έχει το δικό του βάρος στην αναπαράσταση µε την έννοια ότι κάθε θέση περιλαμβάνει ένα βάρος µε το οποίο πολλαπλασιάζεται το αντίστοιχο δυαδικό ψηφίο. Στην περίπτωση του κώδικα BCD, τα βάρη είναι 8421. Ο κώδικας BCD χαρακτηρίζεται ως δυαδικός κώδικας με βάρη.

Π.χ. ο αριθμός 710 αναπαρίσταται σε κώδικα BCD µε την τετράδα 01112 (0×8+1×4+1×2+1×1). Ο κώδικας BCD 8421 αποτελεί την πιο κοινή μορφή κωδικοποίησης.


Όπως βλέπουμε στο παραπάνω σχήμα, η μετατροπή ενός δεκαδικού αριθμού στο δυαδικό σύστημα  και η αναπαράστασή του σε κώδικα BCD είναι κάτι διαφορετικό. Π.χ., αν ο αριθμός 58310 μετατραπεί σε δυαδικό αριθμό θα γραφεί ως 10010001112. ΄Όμως, η παράσταση του 58310 σε κώδικα BCD είναι 0101 1000 0011.

Η παράσταση αυτή προκύπτει αν λάβουμε χωριστά τις τιμές των δεκαδικών ψηφίων 5, 8 και 3 και έπειτα τις ενώσουμε.

Μετατροπή αριθμού από BCD σε δεκαδικό

Για τη μετατροπή ενός BCD αριθμού σε δεκαδικό αριθμό χωρίζουμε τον BCD αριθμό σε ομάδες τεσσάρων (4) bits και κάθε ομάδα μετατρέπεται στο ισοδύναμο δεκαδικό ψηφίο. Για παράδειγμα, ο BCD αριθμός 1001011000111000 αντιστοιχεί στο δεκαδικό αριθμό 9638 αφού:

Μετατροπή αριθμού από δεκαδικό σε BCD

Για τη μετατροπή ενός δεκαδικού αριθμού σε BCD αριθμό, μετατρέπουμε κάθε ψηφίο του δεκαδικού αριθμού σε μία ομάδα τεσσάρων (4) bits που αποτελούν τον ισοδύναμο BCD αριθμό του κάθε δεκαδικού ψηφίου. Για παράδειγμα, ο δεκαδικός αριθμός 3628 αντιστοιχεί στον BCD αριθμό 0011011000101000 αφού:

Ο κώδικας BCD χρησιμοποιείται συχνά σε αριθμομηχανές και ενσωματωμένα συστήματα, όταν χρειάζονται συνεχείς μετατροπές από το δεκαδικό στο δυαδικό σύστημα. Ωστόσο, παρουσιάζει µία δυσκολία στην εκτέλεση των αριθμητικών πράξεων.

Π.χ., έστω η πρόσθεση


Η πρώτη τετράδα bits (0110) αντιστοιχεί στον αριθμό 610 και η δεύτερη (1011) στον αριθμό 1110, ο οποίος δεν έχει αντίστοιχο στον κώδικα BCD. Η λύση δίνεται προσθέτοντας το 610 (0110) στο αποτέλεσμα της πρόσθεσης:


Το τελικό αποτέλεσμα προκύπτει ενώνοντας τις δεκαδικές τιμές των δύο νέων τετράδων και είναι (71)10.

Ο κώδικας BCD δεν είναι ένα άλλο αριθμητικό σύστημα (όπως το δεκαδικό, το δυαδικό, το οκταδικό, το δεκαεξαδικό), αλλά είναι ένας τρόπος παράστασης των 10 ψηφίων του δεκαδικού συστήματος, το κάθε ένα από τα οποία αντιστοιχεί σε μία τετράδα bits.

Επομένως, είναι σημαντική η διαφορά ανάμεσα στη δυαδική κωδικοποίηση ενός δεκαδικού αριθμού και στη μετατροπή ενός δεκαδικού αριθμού στο δυαδικό σύστημα.

Κώδικας αριθμών Gray

Ο κώδικας Gray χαρακτηρίζεται ως δυαδικός κώδικας χωρίς βάρη. Στους δυαδικούς κώδικες χωρίς βάρη η θέση κάθε ψηφίου(bit) του κώδικα δεν έχει σταθερή «αξία», δηλαδή δεν αντιστοιχεί σε κάποιο βάρος, όπως γίνεται στους δυαδικούς κώδικες με βάρη. Οι κώδικες χωρίς βάρη προκύπτουν από κάποιους κανόνες διαφορετικούς για τον καθένα.

Βασική  ιδιότητα του κώδικα Gray είναι ότι η παράσταση των αριθμών γίνεται με τέτοιο τρόπο ώστε κατά τη μετάβαση μεταξύ δύο διαδοχικών αριθμών του δεκαδικού συστήματος να αλλάζει µόνο ένα ψηφίο (1 bit).

 Για παράδειγμα, η παράσταση της δεκαδικής τιμής "1" στο δυαδικό σύστημα είναι " 001 " και το "2" είναι " 010 ". Στον κώδικα Gray, αυτές οι τιμές αντιπροσωπεύονται ως " 001 " και " 011 ". Με αυτόν τον τρόπο, η αύξηση μιας τιμής από το 1 στο 2 απαιτεί μόνο ένα bit για αλλαγή, αντί για δύο.

΄Ένας τρόπος δημιουργίας του κώδικα Gray είναι µε αντανάκλαση. Ειδικότερα, o κώδικας Gray για τέσσερα δυαδικά ψηφία, παρουσιάζεται στον παρακάτω πίνακα:


Παρατηρείστε ότι δύο διαδοχικοί αριθμοί διαφέρουν πάντα κατά ένα µόνο bit.

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

Η κωδικοποίηση ενός δεκαδικού αριθμού στον αντίστοιχο του κώδικα Gray ακολουθεί τα παρακάτω βήματα:

1. Βρίσκουμε τον αντίστοιχο δυαδικό του δεκαδικού αριθμού.

2. Το πιο σημαντικό bit (MSB) του αριθμού σε κώδικα Gray είναι πάντα ίδιο με το πιο σημαντικό bit του δεδομένου δυαδικού αριθμού.

3. Τα επόμενα bit του αριθμού σε κώδικα Gray προκύπτουν από τη σύγκριση των bit του δυαδικού αριθμού με το αμέσως προηγούμενο τους. Αν κατά τη σύγκριση έχουμε τα ίδια ψηφία, θέτουμε «0». Εάν έχουμε διαφορετικά θέτουμε «1» κ.ο.κ., έως ότου εξαντλήσουμε όλα τα δυαδικά ψηφία.

Παρακάτω με τη βοήθεια μερικών παραδειγμάτων θα εξηγήσουμε τον τρόπο κωδικοποίησης του συγκεκριμένου κώδικα.

 

Παράδειγμα 1: Έστω ότι θέλουμε να μετατρέψουμε τον αριθμό 4310.

Ο αντίστοιχος δυαδικός αριθμός του είναι: 1010112

Το πιο σημαντικό bit (MSB) του αριθμού σε κώδικα Gray είναι πάντα ίσο με το πιο σημαντικό bit του δεδομένου δυαδικού αριθμού:


Το επόμενο bit προκύπτει από τη σύγκριση του 2ου bit του δυαδικού αριθμού με το αμέσως προηγούμενο του. Έχουμε διαφορετικά ψηφία οπότε θέτουμε 1.


Το επόμενο bit προκύπτει από τη σύγκριση του 3ου bit του δυαδικού αριθμού με το αμέσως προηγούμενο του. Έχουμε διαφορετικά ψηφία οπότε θέτουμε 1.


Το επόμενο bit προκύπτει από τη σύγκριση του 4ου bit του δυαδικού αριθμού με το αμέσως προηγούμενο του. Έχουμε διαφορετικά ψηφία οπότε θέτουμε 1.


Το επόμενο bit προκύπτει από τη σύγκριση του 5ου bit του δυαδικού αριθμού με το αμέσως προηγούμενο του. Έχουμε διαφορετικά ψηφία οπότε θέτουμε 1.


Το επόμενο bit προκύπτει από τη σύγκριση του 6ου bit του δυαδικού αριθμού με το αμέσως προηγούμενο του. Έχουμε ίδια ψηφία οπότε θέτουμε 0.


Τελειώνοντας, η κωδικοποίηση του δεκαδικού αριθμού 4310 σε κώδικα Gray είναι 111110.

Παράδειγμα 2:  Έστω ότι θέλουμε να μετατρέψουμε τον αριθμό 56410.

Ο αντίστοιχος δυαδικός αριθμός του είναι: 10001101002


Η αντίστροφη διαδικασία της μετατροπής από τον κώδικα Gray στον αντίστοιχο δυαδικό αριθμό ακολουθεί τα παρακάτω βήματα:

1. Το πιο σημαντικό bit (MSB) του αριθμού σε κώδικα Gray είναι πάντα ίδιο με το πιο σημαντικό bit του ζητούμενου δυαδικού αριθμού.

2. Τα επόμενα bit του δυαδικού αριθμού προκύπτουν από τη σύγκριση του πιο σημαντικού bit του δυαδικού αριθμού με το δεύτερο bit του κώδικα Gray. Εάν κατά τη σύγκριση έχουμε τα ίδια ψηφία, θέτουμε «0». Εάν έχουμε διαφορετικά θέτουμε «1» κ.ο.κ., έως ότου εξαντλήσουμε όλα τα ψηφία του κώδικα Gray.

Παράδειγμα 3: Μετατροπή του κώδικα Gray 101101 σε δυαδικό αριθμό.


Τελειώνοντας, ο δυαδικός αριθμός του κώδικα Gray 101101 είναι ο 110110.

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

Αν χρησιμοποιούνταν δυαδικοί αριθμοί για τη μετάβαση από έναν αριθμό στον επόμενο, τότε υπάρχει η πιθανότητα σφάλματος: π.χ. η μετάβαση από το 0111 (7) στο 1000 (8) απαιτεί αλλαγή κατάστασης και των τεσσάρων bit πράγμα που μπορεί να οδηγήσει (για μικρό χρονικό διάστημα) στο 0110 (4) αν το λιγότερο σημαντικό  bit (LSB) δεν συγχρονιστεί και αλλάξει κατάσταση γρηγορότερα από τα άλλα bits, με αποτέλεσμα να γίνει λάθος στη μετατροπή. Αν χρησιμοποιείται ο κώδικας Gray για τη μετάβαση από έναν αριθμό στον επόμενο, τότε η πιθανότητα σφάλματος εξαλείφεται: η μετάβαση από το 0100 (7) στο 1100 (8) επιτυγχάνεται με την αλλαγή ενός (1) μόνο bit.

Κώδικες χαρακτήρων

Στα υπολογιστικά συστήματα αποθηκεύονται εκτός από τα αριθμητικά δεδομένα και δεδομένα που αποτελούνται από γράμματα της αλφαβήτου ή σύμβολα όπως τα σημεία στίξης (όπως το ‘!’ ή το ‘:’) τα ειδικά σύμβολα (όπως το‘€’ ή το ‘©’ ), κάποιους μη εκτυπώσιμους χαρακτήρες (όπως  το κενό, η αλλαγή  γραμμής, οι στηλοθέτες) κτλ. Αυτά τα γράμματα της αλφαβήτου ή τα σύμβολα ονομάζονται χαρακτήρες (characters) πού, όπως οι αριθμοί, παριστάνονται στους υπολογιστές σαν μία σειρά από δυαδικά ψηφία. Σε κάθε χαρακτήρα αντιστοιχεί ένας συγκεκριμένος συνδυασμός από bits (δηλ. ένας δυαδικός αριθμός).

Υπάρχουν πολλοί κώδικες για αναπαραστάσεις χαρακτήρων. Οι πιο γνωστοί είναι: ASCII, ISO & UNICODE.

Κώδικας χαρακτήρων ASCII

Ο κώδικας ASCII (American Standard Code for Information Interchange, Αμερικανικός Πρότυπος Κώδικας για Ανταλλαγή Πληροφοριών) είναι ένα κωδικοποιημένο σύνολο χαρακτήρων του λατινικού αλφάβητου. Αναπτύχθηκε στη δεκαετία του 1960 από τον Αμερικάνικο Οργανισμό Τυποποίησης, ώστε να επιτρέπει σε ψηφιακές συσκευές να επικοινωνούν μεταξύ τους και να επεξεργάζονται, να αποθηκεύουν και να μεταδίδουν πληροφορίες σχετικές με χαρακτήρες. Σχεδιάστηκε αρχικά ως κώδικας των 8 bits όπου τα 7 χρησιμοποιούνταν για την κωδικοποίηση των χαρακτήρων ενώ το 8ο bit για τον έλεγχο της ορθότητας των υπολοίπων 7. Τα 7 διαθέσιμα bit δίνουν τη δυνατότητα 128 (27) διαφορετικών συνδυασμών και επομένως την αναπαράσταση 128 διαφορετικών χαρακτήρων, 94 εκτυπώσιμους (αλφαριθμητικά και σύμβολα), 33 µη εκτυπώσιμους (χαρακτήρες ελέγχου) και το κενό διάστημα. Ο παρακάτω πίνακας περιέχει το πλήρες σύνολο των 128 χαρακτήρων του κώδικα και την αντίστοιχη κωδικοποίηση τους στο δεκαδικό, δυαδικό, οκταδικό και δεκαεξαδικό σύστημα.


Πίνακας κώδικα ASCII

Παράδειγμα κωδικοποίησης ASCII:


Κωδικοσελίδες (character sets)  ISO 8859

Σημαντικό μειονέκτημα του κώδικα ASCII είναι ότι περιλαμβάνει χαρακτήρες μόνο από το λατινικό αλφάβητο. Με την εξάπλωση των υπολογιστών σε χώρες με διαφορετικά αλφάβητα δημιουργήθηκε η ανάγκη αναπαράστασης  χαρακτήρων και άλλων αλφαβήτων. Γι' αυτό το λόγο χρησιμοποιήθηκε και το όγδοο bit για την κωδικοποίηση χαρακτήρων και δημιουργήθηκαν επεκτάσεις του κώδικα.

Το πρότυπο ISO 8859 χρησιμοποιεί 8 bit για να κωδικοποιήσει κάθε χαρακτήρα δηλαδή, συνολικά μπορούμε να αναπαραστήσουμε μόνο 256 (28=256) διαφορετικούς χαρακτήρες. Οι πρώτες 128 θέσεις δεσμεύονται για τους 128 χαρακτήρες του κώδικα ASCII (Λατινικό αλφάβητο και σύμβολα), ενώ οι υπόλοιπες 128 θέσεις χρησιμοποιούνται από κάθε χώρα για την αναπαράσταση γραμμάτων του τοπικού αλφαβήτου, καθώς και άλλων χαρακτήρων (π.χ. μαθηματικά σύμβολα). Υπάρχουν πολλές παραλλαγές του προτύπου ISO 8859 για διαφορετικές οικογένειες γλωσσών:

8859-1 Γλώσσες Δυτικής Ευρώπης

8859-2 Γλώσσες Κεντρικής Ευρώπης

8859-3 Γλώσσες Νότιας Ευρώπης και Εσπεράντο

8859-4 Γλώσσες Βόρειας Ευρώπης

8859-7 Ελληνικά

κτλ


Εικόνα 1.3.5. Κωδικοποίηση ISO 8859-7

Κώδικας UNICODE

Ο κώδικας Unicode δημιουργήθηκε για να ξεπεράσει τους περιορισμούς των παλαιότερων προτύπων κωδικοποίησης χαρακτήρων όπως για παράδειγμα του προτύπου ISO 8859 , το οποίο χρησιμοποιήθηκε από πολλές χώρες στον κόσμο, αλλά παρουσίαζε προβλήματα ασυμβατότητας μεταξύ των διαφορετικών παραλλαγών του αφού επέτρεπε την κωδικοποίηση μόνο δύο αλφαβήτων σε ένα συγκεκριμένο υπολογιστή, συνήθως του Λατινικού και ενός τοπικού, δηλαδή δεν υποστήριζε πολλά αλφάβητα στον ίδιο υπολογιστή. Για παράδειγμα, ένας υπολογιστής στην Ελλάδα που χρησιμοποιεί το πρότυπο ISO 8859-7, υποστηρίζει μόνο το Λατινικό και το Ελληνικό αλφάβητο. Έτσι, η εμφάνιση κειμένου που περιέχει κάποιο άλλο αλφάβητο (όπως για παράδειγμα Ρωσικό, Εβραϊκό κλπ) θα είναι προβληματική σε Ελληνικό υπολογιστή, αφού οι (Ρωσικοί, Εβραϊκοί κλπ) χαρακτήρες δεν θα εμφανίζονται σωστά.

Ο  κώδικας Unicode αποτελεί διεθνές πρότυπο του ISO και παρέχει τη δυνατότητα κωδικοποίησης όλων των χαρακτήρων που χρησιμοποιούνται από ένα μεγάλο αριθμό γλωσσών του κόσμου. Για να κωδικοποιήσει τις χιλιάδες διαφορετικών χαρακτήρων που χρησιμοποιούνται στα αλφάβητα των διαφόρων γλωσσών, το Unicode χρησιμοποιεί ένα κώδικα των 8,16  ή και 32 bits, εξασφαλίζοντας έτσι τη δυνατότητα κωδικοποίησης 28, 216 ή και 232 διαφορετικών χαρακτήρων. Το πρότυπο, το οποίο διατηρείται από την Unicode Consortium , ορίζει στην τρέχουσα έκδοση του (15.0) 149.186 χαρακτήρες.

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

Για παράδειγμα, το πεζό λατινικό γράμμα b εκφράζεται ως U+0062 ενώ το κεφαλαίο ελληνικό γράμμα Ω εκφράζεται ως U+03A9.

Έχει τρεις τύπους κωδικοποίησης χαρακτήρων:

UTF-8:  Το UTF-8 χρησιμοποιείται ευρέως σε συστήματα ηλεκτρονικού ταχυδρομείου και στο διαδίκτυο.  Είναι μια κωδικοποίηση μεταβλητού μήκους, δηλαδή έχει τη δυνατότητα να χρησιμοποιεί έως και 4 byte για την αναπαράσταση των χαρακτήρων σύμφωνα με τον παρακάτω πίνακα:

Περιοχή κώδικα σε δεκαεξαδική μορφή

UTF-8 κωδικοποίηση (bytes)

Σύνολο χαρακτήρων

0…7F

0XXXXXXX

128 χαρακτήρες, το λατινικό αλφάβητο και σύμβολα (συμβατό με το πρότυπο ASCII)

80…7FF

110ΧΧΧΧΧ 10ΧΧΧΧΧΧ

1920 χαρακτήρες, πρόσθετα λατινικά και μεσανατολικά γράμματα και σύμβολα.

800…FFFF

1110XXXX 10XXXXXX 10XXXXXX

Ασιατικά γράμματα και σύμβολα.

10000… 10FFFF

11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

Άλλοι πρόσθετοι χαρακτήρες

Όταν υπάρχουν πολλαπλά bytes στην κωδικοποίηση (δεύτερη στήλη πίνακα), το πρώτο byte ακολουθείται από έναν αριθμό συνοδευτικών bytes, τα οποία ξεκινούν με τον συνδυασμό bits 10.…

UTF-16: Είναι επίσης μια κωδικοποίηση μεταβλητού μήκους. Χρησιμοποιεί είτε δύο bytes (16 bits) για να κωδικοποιήσει τους συνηθέστερα χρησιμοποιούμενους χαρακτήρες. Και 4 bytes (32 bits) για να κωδικοποιήσει τους επιπλέον χαρακτήρες. Το UTF-16 χρησιμοποιείται από συστήματα όπως το Microsoft Windows API, η γλώσσα προγραμματισμού Java και η JavaScript. Δεν είναι συμβατό με τον κώδικα χαρακτήρων ASCII

UTF-32:  Το UTF-32 είναι μια κωδικοποίηση σταθερού μήκους, σε αντίθεση με τις άλλες δύο μορφές. Χρησιμοποιεί ακριβώς 32 bit (4 byte) για να κωδικοποιήσει όλους τους χαρακτήρες.  

Ο παρακάτω πίνακας μας δείχνει τον αριθμό των απαιτούμενων bytes για κάθε κωδικό σημείο στους τρεις διαφορετικούς τύπους κωδικοποίησης:

Περιοχή κώδικα σε δεκαεξαδική μορφή

UTF_8

UTF-16

UTF-32

0…7F

1 byte

2 byte

4 byte

80…7FF

2 byte

800…FFFF

3 byte

10000… 10FFFF

4 byte

4 byte

Πηγή: https://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings

Τα UTF-8 και UTF 16 είναι δύο από τα πιο καθιερωμένα πρότυπα κωδικοποίησης. Διαφέρουν μόνο σε πόσα bytes χρησιμοποιούν για την κωδικοποίηση κάθε χαρακτήρα. Δεδομένου ότι και οι δύο είναι κωδικοποίηση μεταβλητού εύρους, μπορούν να χρησιμοποιήσουν μέχρι και τέσσερα bytes για να κωδικοποιήσουν τα δεδομένα, αλλά όταν αυτό είναι το ελάχιστο, το UTF-8 χρησιμοποιεί μόνο 1 byte (8 bits) και το UTF-16 χρησιμοποιεί 2 bytes (16 bits). Αυτό έχει τεράστιο αντίκτυπο στο μέγεθος που προκύπτει από τα κωδικοποιημένα αρχεία. Όταν χρησιμοποιείτε μόνο χαρακτήρες ASCII, ένα αρχείο με κωδικοποίηση UTF-16 θα είναι περίπου διπλάσιο από το ίδιο αρχείο που κωδικοποιείται με το UTF-8.

Παράδειγμα κωδικοποίησης χαρακτήρων στους τρεις τύπους του Unicode:

Χαρακτήρας

Κωδικοποίηση

Bytes κώδικα

Α

UTF-8

01000001

A

UTF-16

00000000 01000001

A

UTF-32

00000000 00000000 00000000 01000001


Τελευταία τροποποίηση: Τετάρτη, 3 Ιανουαρίου 2024, 5:03 PM