stoxoi_131.jpg


Προσπαθήστε να μετρήσετε πόσα διαφορετικά γράμματα (κεφαλαία, πεζά), αριθμούς και σύμβολα θα μπορούσατε να εισάγετε σε ένα πρόγραμμα επεξεργασίας κειμένου χρησιμοποιώντας το πληκτρολόγιο του υπολογιστή σας. Μην ξεχάσετε να υπολογίσετε όλα τα σύμβολα που μοιράζονται κάποια πλήκτρα. Όλα τα γράμματα (α, Δ, κ, Μ, …), οι αριθμοί (0,1,2,3, …) τα σύμβολα (#, !, @, …) είναι χαρακτήρες.
  • Πόσα δυαδικά ψηφία (bit) χρειάζεστε για να αναπαραστήσετε όλους τους χαρακτήρες που μετρήσατε στο πληκτρολόγιο;
  • Αν προσθέσετε και τα λατινικά γράμματα (κεφαλαία, πεζά) τι παρατηρείτε;


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

Ένα σύνολο χαρακτήρων λέγεται κωδικοποιημένο σύνολο χαρακτήρων όταν κάθε χαρακτήρας αντιστοιχίζεται σε ένα συγκεκριμένο αριθμό που καλείται code point. Η τιμή του code point, αντιπροσωπεύει τη θέση του χαρακτήρα στο κωδικοποιημένο σύνολο χαρακτήρων.
Για παράδειγμα,
  • στο κωδικοποιημένο σύνολο χαρακτήρων ASCII, ο χαρακτήρας που αναπαριστά το κεφαλαίο γράμμα "Α" στο λατινικό αλφάβητο, μπορεί να απεικονιστεί στον αριθμό 65 (δεκαδικό σύστημα αρίθμησης) ή 41 (δεκαεξαδικό σύστημα αρίθμησης).
  • στο κωδικοποιημένο σύνολο χαρακτήρων Unicode, το code point για το χαρακτήρα à είναι 225 (δεκαδικό σύστημα αρίθμησης), ή E1 (δεκαεξαδικό σύστημα αρίθμησης).

Τα κωδικοποιημένα σύνολα χαρακτήρων, μερικές φορές αναφέρονται ως κωδικοσελίδες (code pages).

Η κωδικοποίηση χαρακτήρων (character encoding) είναι το κλειδί που μετατρέπει τα code pοints σε δυαδική μορφή για να αποθηκευτούν σε έναν υπολογιστή ή να μεταδοθούν.

Επομένως τα μέσα και οι συσκευές εισόδου, εξόδου, αποθήκευσης και επικοινωνίας μεταφέρουν, αποθηκεύουν και χειρίζονται δεδομένα κειμένου υπό τη μορφή ενός κώδικα χαρακτήρων. Η κωδικοποίηση χαρακτήρων είναι το κλειδί για να ξεκλειδώσει ο κώδικας. O κώδικας είναι μια απεικόνιση κάθε χαρακτήρα σε έναν μοναδικό αριθμό (code point), ενώ η κωδικοποίηση μετατρέπει αυτούς τους αριθμούς σε δυαδική μορφή, ώστε κάθε χαρακτήρας να αντιστοιχίζεται σε μία μοναδική διαφορετική ακολουθία δυαδικών ψηφίων (σειρές από bytes).

ASCII_encoding.png
unicode.png
Πηγή: Introduction to character encoding

Οι πιο διαδεδομένοι κώδικες για την αναπαράσταση χαρακτήρων είναι οι κώδικες ASCII και UNICODE.

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


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

Αρχικά στον κώδικα ASCII χρησιμοποιούνταν 7 bit για την κωδικοποίηση των χαρακτήρων και το 8ο bit για έλεγχο ορθότητας κατά τη μεταφορά στοιχείων. Το bit αυτό ονομάστηκε ψηφίο ισοτιμίας (parity bit). Το αποτέλεσμα ήταν να επιτρέπει την απεικόνιση 128 (27) διαφορετικών χαρακτήρων. Σε κάθε χαρακτήρα αντιστοιχίζεται ένας μοναδικός αριθμός από το 0 έως το 127.
0 - 31
χαρακτήρες ελέγχου (μη εκτυπώσιμοι)
32 - 63
αριθμοί, κενό, σημεία στίξης, σύμβολα πράξεων
64 - 95
κεφαλαία λατινικά γράμματα και ειδικά σύμβολα
96 - 127
πεζά λατινικά γράμματα και ειδικά σύμβολα
ASCII-Table.png
Πηγή: ASCII-Wkipedia
hello_ascii.jpg

Σημαντικό μειονέκτημα του κώδικα ASCII είναι ότι δεν είναι δυνατή η αναπαράσταση χαρακτήρων άλλου αλφαβήτου εκτός από το λατινικό. Γι' αυτό το λόγο χρησιμοποιήθηκε και το όγδοο bit για την κωδικοποίηση χαρακτήρων και δημιουργήθηκαν επεκτάσεις του κώδικα. Έτσι έγινε δυνατή η αναπαράσταση 128 επιπλέον χαρακτήρων (28=256), που χρησιμοποιήθηκαν από κάθε χώρα για την αναπαράσταση γραμμάτων του τοπικού αλφαβήτου, καθώς και άλλων χαρακτήρων (π.χ. μαθηματικά σύυμβολα).
Δραστηριότητες- Αναζητήστε πληροφορίες για την οικογένεια προτύπων ISO 8859 και τις κωδικοσελίδες των Windows. Περιηγηθείτε στον Πίνακα ASCII/κωδικοσελίδες.
- Αναζητήστε και χρησιμοποιείστε online μετατροπείς (π.χ. Ascii Text to Binary Converter). Ανταλλάξτε σε ομάδες σύντομα μηνύματα.
- Για να διακρίνετε τα αλφαριθμητικά δεδομένα από αριθμητικά, πειραματιστείτε στο excel με τη συνάρτηση TEXT (τι κάνουν οι συναρτήσεις CODE και CHAR;)- Aναγνώριση και διόρθωση σφαλμάτων κατά την αποθήκευση ή μετάδοση δυαδικής πληροφορίας μέσω παιχνιδιού (http://goo.gl/GYnPje, http://www.csfieldguide.org.nz/en/interactives/parity/index.html)

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


Ο κώδικας Unicode είναι ένα παγκόσμιο σύνολο χαρακτήρων (universal character set), δηλ. ένα διεθνές πρότυπο που παρέχει τη δυνατότητα κωδικοποίησης όλων των χαρακτήρων των σημαντικότερων γλωσσών του κόσμου, που χρησιμοποιούνται στους υπολογιστές. Αποσκοπεί να είναι ένα υπερσύνολο όλων των άλλων κωδικοποιήσεων συνόλων χαρακτήρων που παρουσιάζουν περιορισμούς για χρήση σε πολυγλωσσικά υπολογιστικά συστήματα. Με τον κώδικα ASCII και τους άλλους κώδικες των 8 bit μπορούμε να αναπαραστήσουμε συνολικά μονο 256 διαφορετικούς χαρακτήρες. Οι πρώτες 128 θέσεις δεσμεύονται για το Λατινικό αλφάβητο και μερικά σύμβολα, ενώ οι υπόλοιπες 128 για το τοπικό μη-Λατινογενές αλφάβητο.
Στο παρελθόν, διάφοροι οργανισμοί, συγκέντρωσαν διαφορετικά σύνολα χαρακτήρων και δημιούργησαν κωδικοποιήσεις γι' αυτά (π.χ. ένα σύνολο μπορεί να κάλυπτε μόνο τις λατινογενείς δυτικοευρωπαϊκές γλώσσες ή μια ιδιαίτερη γλώσσα της Άπω Ανατολής, όπως τα Ιαπωνικά). Αυτό είχε ως αποτέλεσμα μια εφαρμογή να μην μπορεί να υποστηρίξει όλες τις κωδικοποιήσεις, αλλά ούτε μια συγκεκριμένη κωδικοποίηση επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα μιας συγκεκριμμένης γλώσσας. Επιπλέον, ήταν συνήθως αδύνατος ο συνδυασμός διαφορετικών κωδικοποιήσεων στην ίδια ιστοσελίδα ή σε μια βάση δεδομένων.
1024px-Unicode_logo.svg.png
unicodeblocks.png
Πηγή: W3C - Character encodings: Essential concepts
  • Ο κώδικας Unicode παρέχει ένα μεγάλο, ενιαίο σύνολο χαρακτήρων που έχει ως στόχο να συμπεριλάβει όλους τους χαρακτήρες που απαιτούνται για κάθε σύστημα γραφής στον κόσμο, συμπεριλαμβανομένων των αρχαίων συστημάτων γραφής (σφηνοειδής γραφή, γοτθική και αιγυπτιακή ιερογλυφική γραφή). Επίσης περιλαμβάνει και άλλα σύμβολα που χρησιμοποιούνται στα μαθηματικά, τις Φυσικές Επιστήμες και τη μουσική (Unicode Character Table)
  • Πλέον, ο ρόλος του είναι σημαντικός στην αρχιτεκτονική του παγκόσμιου ιστού και τα λειτουργικά συτήματα, και υποστηρίζεται από όλους τους φυλλομετρητές του παγκόσμιου ιστού και τις εφαρμογές.
  • Προτείνει έναν μοναδικό αριθμό (code point) για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, το λογισμικό και τη γλώσσα. Οι πρώτες 65.536 (=216) θέσεις κωδικών σημείων (code points) στο σύνολο χαρακτήρων Unicode αποτελούν το Βασικό Πολύγλωσσικό Επίπεδο (Basic Multilingual Plane, ΒΜΡ) και περιλαμβάνει τους χαρακτήρες που χρησιμοποιούνται περισσότερο. Η τιμή του code point παριστάνεται με το πρόθεμα U+ ακολουθούμενο από τη δεκαεξαδική μορφή της θέσης του. Για παράδειγμα στο code point U+0041 αντιστοιχεί το "Latin Capital letter A".
  • Παρέχει επίσης χώρο για περίπου ένα εκατομμύριο επιπλέον θέσεις κωδικών σημείων (code points) για συμπληρωματικούς χαρακτήρες (supplementary characters).
Unicode-4-Allocation.png

Πηγή: Unicode In 5 Minutes
Roadmap_to_Unicode_BMP.svg.png
Βασικό Πολύγλωσσικό Επίπεδο: Κάθε αριθμημένο κουτάκι αντιπροσωπεύει 256 code points

Πηγή: Plane (Unicode) - Wikipedia

Ένα σύνολο χαρακτήρων, πολλαπλές κωδικοποιήσεις:

Πολλά πρότυπα κωδικοποίησης χαρακτήρων, όπως εκείνα της σειράς ISO 8859, χρησιμοποιούν ένα μόνο byte για ένα χαρακτήρα και η κωδικοποίηση είναι μια απλή αντιστοίχιση της θέση του χαρακτήρα στο κωδικοποιημένο σύνολο χαρακτήρων με τον αντίστοιχο δυαδικό αριθμό. Για παράδειγμα, το γράμμα Α αντιστοιχίζεται στον αριθμό 65 που στο δυαδικό σύστημα αρίθμησης είναι 01000001 (1 byte). Για το πρότυπο ISO 8859-1 αυτό δεν αλλάζει ποτέ.

Στο Unicode, όμως, τα πράγματα δεν είναι τόσο απλά. Παρά το γεγονός ότι το code point για το χαρακτήρα à είναι πάντα 225 (δεκαδικό σύστημα αρίθμησης ή U+00E1 στη δεκαεξαδική μορφή), όταν κωδικοποιείται σε UTF-8, αντιπροσωπεύεται από 2 byte [(1100 0011 1010 0001)2 = (c3a1)16]. Επιπλέον, στον Unicode υπάρχουν διάφοροι τρόποι κωδικοποίησης του ίδιου χαρακτήρα UTF-8, UTF-16, UTF-32.
  • Η κωδικοποίηση χαρακτήρων UTF-8 (8-bit Unicode Transformation Format) αποτελεί μια κωδικοποίηση μεταβλητού μήκους. Χρησιμοποιεί ομάδες από byte (από ένα μέχρι τέσσερα byte) για να αναπαραστήσει τα κωδικά σημεία (code points) του Unicode. Για παράδειγμα χρησιμοποιεί μόνο ένα byte για την κωδικοποίηση των 128 ASCII χαρακτήρων στο διάστημα του Unicode U+0000 μέχρι U+007F, δύο bytes για χαρακτήρες σε πολλές ομάδες αλφάβητων, και τρία bytes για τους υπόλοιπους χαρακτήρες του Βασικού Πολυγλωσσικού Επίπεδου (ΒΜΡ). Για τους Συμπληρωματικούς χαρακτήρες (supplementary characters) -που σπάνια χρησιμοποιούνται- χρησιμοποιεί 4 bytes.
  • Η κωδικοποίηση UTF-16 χρησιμοποιεί 2 bytes για κάθε χαρακτήρα στο BMP, και 4 byte για τους συμπληρωματικούς χαρακτήρες.
  • Η κωδικοποίηση UTF-32 χρησιμοποιεί 4 byte για όλους τους χαρακτήρες.
external image encodings.png
Πηγή: W3C - Character encodings: Essential concepts
external image unicode.png

Δραστηριότητα
- Πώς δηλώνουμε στην ετικέτα HTML <meta> την κωδικοποίηση μιας ιστοσελίδας; Αναζητήστε πληροφορίες στους συνδέσμους (http://goo.gl/6AvRpR, http://goo.gl/taq07r)



ΒΙΒΛΙΟΓΡΑΦΙΑ - ΑΝΑΦΟΡΕΣ:
- Univesity of Canterbury (2015). Computer Science Field Guide, New Zealand 2015 (Ανακτήθηκε 19/11/2016 από http://www.csfieldguide.org.nz/en/index.html, http://www.csfieldguide.org.nz/en/teacher/index.html)
- W3C (2008). Character encodings for beginners (Ανακτήθηκε 02/09/2015 από http://goo.gl/26NIDg)
- W3C (2012). Character encodings: Essential concepts (Ανακτήθηκε 02/09/2015 από http://goo.gl/wHSQgO)
- Wikipedia (2014). Unicode (Ανακτήθηκε 02/09/2015 από https://el.wikipedia.org/wiki/Unicode)
- Wikipedia (2013). UTF-8 (Ανακτήθηκε 02/09/2015 από https://el.wikipedia.org/wiki/UTF-8)
- Γιακουμάκης, ε., Γκυρτής, κ., Μπελεσιώτης, Β.Σ., Ξυνός, Π., Στεργιοπούλου - Καλαντζή, Ν. (2000) Εφαρμογές Πληροφορικής Υπολογιστών. 2.6 Οι κώδικες χαρακτήρων. Οργανισμός Εδόσεων Διδακτικών Βιβλίων, Αθήνα. (Ανακτήθηκε 02/09/2015 από http://goo.gl/dLJx0E)
- Σιδερίδης, Α., Γιαλούρης. Κ., Παπαδόπουλος. Α., Σταθόπουλος. Κ. (2001). Βασικές Αρχές Ψηφιακής Τεχνολογίας. 2.2 Κωδικοποίηση χαρακτήρων. Παιδαγωγικό Ινστιτούτο, Αθήνα. (Ανακτήθηκε 02/09/2015 από http://goo.gl/q8yHct)

ΠΗΓΕΣ - ΥΛΙΚΟ ΓΙΑ ΕΠΙΠΛΕΟΝ ΜΕΛΕΤΗ
- Σχ. Βιβλίο: Βασικές Αρχές Ψηφιακής Τεχνολογίας (2.2 Κωδικοποίηση χαρακτήρων)
- Computer Science Field Guide (5.4 Text), University of Canterbury, New Zealand (http://www.csfieldguide.org.nz/en/chapters/data-representation.html, http://www.csfieldguide.org.nz/en/teacher/chapters/data-representation.html)
- 1.3.1 Δραστηριότητα-1 Φώτα και Τύμπανα, Μπουκέας Γ. (2013) (http://goo.gl/MIJ8hc)
- 1.3.1 Σενάριο-1 Συνομιλώντας με ένα modem, Κογχυλάκης Γ. (2015) (https://goo.gl/QR6PzS)
- 1.3.1 Σενάριο-2 Ψηφιακή Αναπαράσταση Συμβόλων, Σαμαράς κ.α. (https://goo.gl/p5uVhZ)