Unicode

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

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

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

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

Γέννηση και ανάπτυξη του προτύπου[Επεξεργασία | επεξεργασία κώδικα]

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

Το Unicode κωδικοποιεί οποιονδήποτε χαρακτήρα προμηθεύοντας ένα μοναδικό κωδικό σημείο ("θέση") σε καθέναν τους, χρησιμοποιώντας εως και 16 bit ανα χαρακτήρα το οποίο εξασφαλίζει οτι όλοι οι χαρακτήρες μπορούν να υποστηρίζονται από όλα τα υπολογιστικά συστήματα. Το unicode δεν κωδικοποιεί συγκεκριμένες μορφές που αυτοί μπορούν να πάρουν σε διάφορες γραμματοσειρές. Με άλλα λόγια το πρότυπο Unicode αφήνει το ανάλογο λογισμικό (πλοηγός Διαδικτύου, επεξεργαστής κειμένου) να "αποφασίσει" αυτό την οπτική αναπαράσταση (στυλ, μέγεθος, γραμματοσειρά) των χαρακτήρων.

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

Αλφάβητα που περιλαμβάνονται[Επεξεργασία | επεξεργασία κώδικα]

Το Unicode περιλαμβάνει σχεδόν όλα τα συστήματα γραφής που είναι σε χρήση σήμερα. Αυτά είναι τα:

και άλλα

Το Unicode έχει προσθέσει και άλλα αλφάβητα όπως ιστορικά αλφάβητα και εξαφανισμένα αλφάβητα για ακαδημαϊκούς λόγους:

...

Επίσης περιλαμβάνει και άλλα σύμβολα που χρησιμοποιούνται στα μαθηματικά και την μουσική.

Διάφορα[Επεξεργασία | επεξεργασία κώδικα]

Το 1997 Michael Everson πρότεινε να κωδικοποιηθούν και οι χαρακτήρες της φανταστικής Κλίνγκον γλώσσας στο Επίπεδο 1 του ISO/IEC 10646-2. Αλλά η πρόταση αυτή απορρίφθηκε όπως και η πρόταση για συμπερίληψη γλωσσών του Τόλκιν.

Κωδικοποιήσεις[Επεξεργασία | επεξεργασία κώδικα]

Πρότυπα[Επεξεργασία | επεξεργασία κώδικα]

Η κοινοπραξία Unicode με έδρα την Καλιφόρνια, αναπτύσσει το πρότυπο Unicode. Οποιαδήποτε οργάνωση ή ιδιώτης μπορεί να γίνει μέλος της εφόσον πληρώσει συνδρομή. Στα μέλη συμπεριλαμβάνονται σχεδόν όλες τις μεγάλες εταιρείες λογισμικού και υλικού που ενδιαφέρονται σχετικά όπως οι Apple, Microsoft, IBM, Xerox, HP, Adobe Systems και πολλές άλλες.

Η κοινοπραξία δημοσίευσε πρώτη φορά Το πρότυπο Unicode (ISBN 0-321-18578-1) το 1991,και συνεχίζει να αναπτύσσει πρότυπα βασισμένα στην αρχική αυτή εργασία. Η κοινοπραξία Unicode αναπτύχθηκε σε συνδυασμό με τον Διεθνή Οργανισμό Τυποποίησης ISO, και το πρότυπό της μοιράζεται το σύνολο χαρακτήρων της με το πρότυποISO/IEC 10646. Το Unicode και το ISO/IEC 10646 είναι ισοδύναμα ως κωδικοποιήσεις χαρακτήρων αλλά το Unicode περιέχει πολύ περισσότερες πληροφορίες για προγραμματιστές που το υλοποιούν, καλύπτοντας σε βάθος θέματα όπως κωδικοποίηση βασισμένη σε μπιτ, Unicode collation αλγόριθμοι, και γραφική απόδοση. Το Unicode απαριθμεί αρκετές ιδιότητες χαρακτήρων, περιλαμβάνοντας και αυτές που χρειάζονται για BiDi υποστήριξη. Τα δυο πρότυπα χρησιμοποιούν μερικώς διαφορετική ορολογία.

Unicode ιστορικό αναθεωρήσεων[Επεξεργασία | επεξεργασία κώδικα]

Αποθήκευση μεταφορά και επεξεργασία[Επεξεργασία | επεξεργασία κώδικα]

Μέχρι τώρα το Unicode παρουσιάστηκε απλά ως μια απεικόνιση κάθε χαρακτήρα που χρησιμοποιείται σε κάποιο αλφάβητο στη Γη σε έναν μοναδικό αριθμό, το κωδικό σημείο. Όμως η αποθήκευση αυτών των αριθμών κατά την επεξεργασία κειμένου είναι ένα εντελώς διαφορετικό θέμα. Προβλήματα ανακύπτουν από το γεγονός ότι το λογισμικό που γράφεται στον δυτικό κόσμο χειρίζεται μόνο κωδικοποιήσεις 8-bit με την unicode υποστήριξη να προστίθεται πολύ αργότερα.

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

Το Unicode ορίζει δύο τρόπους απεικόνισης:

  • Τις UTF (Unicode Transformation Format) κωδικοποιήσεις
  • Και τις UCS (Universal Character Set) κωδικοποιήσεις

Αυτές οι κωδικοποιήσεις περιλαμβάνουν τις εξής κύριες:

(Ο αριθμός υποδηλώνει τον αριθμό των μπιτς σε κάθε μονάδα (για UTF κωδικοποιήσεις) ή byter ανά μονάδα (για UCS κωδικοποιήσεις).)

Έτοιμοι και σύνθετοι χαρακτήρες[Επεξεργασία | επεξεργασία κώδικα]

Το Unicode περιλαμβάνει ένα μηχανισμό τροποποίησης του σχήματος των χαρακτήρων κι έτσι επεκτείνει το ρεπερτόριο των υποστηριζόμενων γλυφών. Αυτό καλύπτει τη χρήση συνδυαζόμενων διακριτικών χαρακτήρων. Αυτοί εισάγονται μετά τον κύριο χαρακτήρα (μπορεί κανείς να σωρρεύσει περισσότερους συνδυαζόμενους διακριτικούς χαρακτήρες στον ίδιο χαρακτήρα). Ωστόσο, για λόγους συμβατότητας, το Unicode περιλαμβάνει επίσης μια μεγάλη ποσότητα από προσυντεθιμένους χαρακτήρες. Έτσι, σε πολλές περιπτώσεις, οι χρήστες έχουν στη διάθεσή τους πολλούς τρόπους κωδικοποίησης του ίδιου χαρακτήρα. Για να το αντιμετωπίσει αυτό, το Unicode παρέχει τον μηχανισμό των μετασχηματισμών κανονικής ισοδυναμίας. Παρόμοια κατάσταση ισχύει και με το Hangul. Το Unicode παρέχει τον μηχανισμό σύνθεσης συλλαβών Hangul με το Hangul Jamo. Ωστόσο, παρέχει επίσης προσυντεθιμένες συλλαβές Hangul (11,171 συλλαβές)

Τα ιδεογράμματα CJK (Κίνα, Ιαπωνία, Κορέα) έχουν επί του παρόντος κώδικες μόνο για την προσυντεθιμένη μορφή τους. Ακόμα όμως, τα περισσότερα από αυτά τα ιδεογραφήματα τελικώς αποτελούνται από απλούστερα στοιχεία, έτσι, κατ' αρχήν το Unicode μπορεί να τα αποσυνθέσει όπως συμβαίνει με τα Hangul. Αυτό θα μείωνε σε μεγάλο βαθμό τον αριθμό των απαιτούμενων κωδικών σημείων, ενώ ταυτόχρονα επιτρέπει την εμφάνιση στην πραγματικότητα κάθε νοητού ιδεογραφήματος (καταργώντας έτσι τα προβλήματα της Han unification) Μια παρόμοια ιδέα καλύπτει ορισμένες μεθόδους εισαγωγής όπως η μέθοδος Cangjie και Wubi. Ωστόσο, οι προσπάθειες να γίνει αυτό για κωδικοποίηση χαρακτήρων σκόνταψαν πάνω στο γεγονός ότι τα ιδεογραφήματα δεν αποσυντίθενται τόσο απλά ή τόσο κανονικά όσο δείχνουν.

Οι συνδυαζόμενοι χαρακτήρες, όπως η περίπλοκη μορφοποίηση του script που απαιτείται για να αποδώσει κανείς σωστά ένα Αραβικό κείμενο και πολλά άλλα scripts, συχνά εξαρτώνται από περίπλοκες τεχνολογίες γραμματοσειρών, όπως η Open Type (από την Adobe και τη Microsoft), την Graphite (από την SIL International) και την Apple Advanced Typography AAT (από την Apple Computer), μέσω της οποίας ο σχεδιαστής γραμματοσειράς περιλαμβάνει οδηγίες σε ένα λογισμικό δημιουργίας γραμματοσειρών για το πως θα παράγει διαφορετικές σειρές χαρακτήρων. Μια άλλη μέθοδος που χρησιμοποιείται σε γραμματοσειρές με σταθερό πλάτος είναι να τοποθετείται το σύμβολο του συνδυαζόμενου χαρακτήρα πριν τα δεξιά του (sidebearing). Αυτή η μέθοδος, ωστόσο, λειτουργεί μόνο για ορισμένα διακριτικά και η σώρρευση δεν θα γίνει σωστά.

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

Επίσης, οι κάτω τελείες, οι οποίες χρειάζονται στα Ινδικά Romanization, συχνά θα τοποθετούνται λανθασμένα ή ακόμα χειρότερα. Παράδειγμα:

ṃ - ṇ - ḷ

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

Χρήση του Unicode[Επεξεργασία | επεξεργασία κώδικα]

Λειτουργικά συστήματα[Επεξεργασία | επεξεργασία κώδικα]

Παρά τα τεχνικά προβλήματα τους περιορισμούς και την κριτική στη πορεία, το Unicode έχει επικρατήσει ως το κυρίαρχο σχήμα κωδικοποίησης χαρακτήρων. Τα Windows NT και οι απόγονοί του Windows 2000 και Windows XP κάνουν εκτεταμένη χρήση του σχήματος κωδικοποίησης UTF-16 για εσωτερική αναπαράσταση κειμένου. UNIX λειτουργικά συστήματα όπως GNU/Linux, Plan 9 από Bell Labs, BSD και Mac OS X έχουν υιοθετήσει το σχήμα UTF-8, ως τη βάση για την αναπαράσταση πολυγλωσσικό κείμενο.

Ηλεκτρονική αλληλογραφία[Επεξεργασία | επεξεργασία κώδικα]

Το πρότυπο MIME ορίζει δύο διαφορετικούς μηχανισμούς για κωδικοποίηση όχι-ASCII χαρακτήρων στα μηνύματα ηλεκτρονικής αλληλογραφίας,e-mails, ανάλογα με το αν οι χαρακτήρες είναι στις επικεφαλίδες του ηλ.μηνύματος όπως πχ η επικεφαλίδα "Θέμα:" ή βρίσκονται στο κυρίος κείμενο του ηλεκτρονικού μηνύματος. Και στις δυο περιπτώσεις, προσδιορίζεται το αρχικό σύνολο χαρακτήρων καθώς και η κωδικοποίηση μεταφοράς. Για ηλεκτρονική αλληλογραφία με Unicode χαρακτήρες προτείνονται το σχήμα κωδικοποίησης UTF-8 και η κωδικοποίηση μεταφοράς Base64. Οι λεπτομέρειες των δύο μηχανισμών καθορίζονται στο πρότυπο MIME και γενικά είναι κρυμμένοι από τον απλό χρήστη λογισμικού ηλ. αλληλογραφίας.

Η υιοθέτηση του Unicode στην Ηλεκτρονική αλληλογραφία είναι πολύ αργή. Τα περισσότερα κείμενα στην ανατολική Ασία κωδικοποιούνται άκομα σε τοπικές κωδικοποιήσεις όπως η Shift-JIS, και πολλά δημοφιλή προγράμματα ηλ.αλληλογραφίας ακόμα και αν έχουν κάποια unicode υποστήριξη εντούτοις δεν μπορούν να χειριστούν Unicode δεδομένα σωστά. Η κατάσταση αυτή δεν προβλέπεται να αλλάξει το προσεχές μέλλον.

Διαδίκτυο[Επεξεργασία | επεξεργασία κώδικα]

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

Παρόλο που συντακτικοί κανόνες μπορεί να επηρεάζουν τη σειρά με την οποία οι χαρακτήρες επιτρέπεται να εμφανίζονται και η γλώσσα HTML 4.0 αλλά και η XML 1.0 εξ ορισμού υποστηρίζουν έγγραφα που αποτελούνται από χαρακτήρες από όλο το εύρος των κωδικών σημείων του Unicode εξαιρουμένων μόνο κάποιων χαρακτήρων ελέγχου τα μόνιμα μη-διαθέσιμα κωδικά σημεία D800-DFFF, οποιοδήποτε κωδικό σημείο που τελειώνει σε FFFE or FFFF και οποιοδήποτε κωδικό σημείο πάνω από 10FFFF. Αυτοί οι χαρακτήρες παρουσιάζονται είτε απευθείας ως μπάιτς σύμφωνα με την κωδικοποίηση του εγγράφου,εφόσον υποστηρίζονται από την κωδικοποίηση,ή μπορούν να γραφτούν ως αριθμητικές αναφορές χαρακτήρων βασισμένες στο κωδικό σημείο του Unicode χαρακτήρα, εφόσον η κωδικοποίηση που χρησιμοποιεί το έγγραφο επιτρέπει τα ψηφία και τα σύμβολα που χρειάζονται για να γράψουμε τις αναφορές (κάτι που συμβαίνει με όλες τις κωδικοποιήσεις που έχουν υιοθετηθεί στο διαδίκτυο) Για παράδειγμα οι αναφορές : Δ Й ק م (ή η ίδια τιμή στο δεκαεξαδικό με πρόθεμα &#x ) εμφανίζεται στον πλοηγό σου ως Δ, Й, ק, م, ๗, あ, 叶, 葉 και 냻—εφόσον έχεις την κατάλληλη γραμματοσειρά, αυτά τα σύμβολα φαίνονται σαν Greek capital letter "Delta", Cyrillic capital letter "Short I", Arabic letter "Meem", Hebrew letter "Qof", Thai numeral 7, Japanese Hiragana "A", simplified Chinese "Leaf", traditional Chinese "Leaf", and Korean Hangul syllable "Nyaelh", αντίστοιχα.

Γραμματοσειρές[Επεξεργασία | επεξεργασία κώδικα]

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

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

Χαρακτήρες Unicode που δεν μπορούν να αποδωθούν γραφικά απεικονίζονται με ένα λευκό τετράγωνο.

Μηχανές γραφικής απόδοσης πολυγλωσσικού κειμένου[Επεξεργασία | επεξεργασία κώδικα]

Μέθοδοι εισαγωγής[Επεξεργασία | επεξεργασία κώδικα]

Οι επεξεργαστές κειμένου Microsoft Word επιτρέπουν την εισαγωγή χαρακτήρων Unicode με δυο τρόπους:

  1. πληκτρολογώντας το δεκαεξαδικό κωδικό σημείο, πχ 014Β(ή U+014b) για τον ŋ,και πατώντας alt + x προκειμένου να αντικατασταθεί η συμβολοσειρά στα αριστερά του δρομέα με τον αντίστοιχο χαρακτήρα unicode. Συνήθως γίνεται και το αντίστροφο,δηλαδή άν έχεις έναν unicode χαρακτήρα στα αριστερά του δρομέα και πατήσεις Alt + x το Word θα αντικαταστήσει τον χαρακτήρα με το ισοδύναμό του κωδικό σημείο στο δεκαεξαδικό ή ακόμα
  2. πληκτρολογώντας Alt + #, όπου # είναι το δεκαδικό κωδικό σημείο, πχ Alt + 0331 θα μας δώσει τον χαρακτήρα Unicode ŋ.

Το Gnome2 ακολουθεί το πρότυπο ISO 14755. Κράτησε πατημένα τα πλήκτρα Ctrl and Shift και εισήγαγε στο δεκαεξαδικό το κωδικό σημείο του unicode χαρακτήρα που θέλεις να εμφανιστεί.

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]

Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα Unicode της Αγγλικής Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 3.0. (ιστορικό/συντάκτες).