Encodings

Vasilis Vasaitis vvas at hal.csd.auth.gr
Tue Nov 21 00:34:44 EET 2000


  Χαιρετώ!

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

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

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

  Στην αρχή λοιπόν υπήρχε το DOS. Το DOS είχε τις λεγόμενες κωδικοσελίδες
(codepages) για την αναπαράσταση διαφορετικών γλωσσών. Κάθε κωδικοσελίδα
είχε 256 χαρακτήρες (8-bit), όπου το κάτω μισό ήταν το γνωστό ASCII, ενώ το
πάνω μισό εξυπηρετούσε την εκάστοτε γλώσσα. Για τα ελληνικά είχαμε δύο
κωδικοσελίδες, την 737 και την 869. Η 869 ήταν η «επίσημη» κωδικοσελίδα της
IBM, παρόμοια στην διάταξη των συμβόλων με την 850, όμως ποτέ δεν περπάτησε,
απλά γιατί ποτέ δεν είχε ιδιαίτερη υποστήριξη από πουθενά. Αντίθετα, όλος ο
κόσμος δούλευε με την 737, που ήταν η 437 (η αμερικάνικη) τροποποιημένη ώστε
να έχει ελληνικά. Γενικά εκείνον τον καιρό φαίνεται ότι οι Έλληνες
κατασκευαστές είχαν πιο πολύ πάρε δώσε με την Αμερική παρά με την δυτική
Ευρώπη (κάτι που φαίνεται κι από την διάταξη πληκτρολογίου που έχουμε).

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

  Ενώ λοιπόν το 737 βασίλευε στον κόσμο του DOS, ο ελληνικός και ο διεθνής
οργανισμός τυποποίησης (ΕΛΟΤ και ISO, αντίστοιχα) δεν κάθονταν με σταυρωμένα
τα χέρια. Αποτέλεσμα ήταν το ΕΛΟΤ 928 ή ISO-8859-7, που είναι και η πλέον
διαδεδομένη κωδικοποίηση των ελληνικών, στο ηλεκτρονικό ταχυδρομείο, στο
web, και σε πολλά άλλα μέρη. Οι περισσότερες προσπάθειες εξελληνισμού
συστημάτων με χρήση χαρακτήρων ενός byte βασίζονται σήμερα στην συγκεκριμένη
κωδικωποίηση.

  Όταν η Microsoft έβγαλε το Win32, δημιούργησε νέες κωδικοσελίδες. Η
ελληνική είναι η Windows-1253, η οποία, για καλή μας τύχη, έχει μόνο μία
διαφορά με το iso-8859-7: το άλφα κεφαλαίο τονούμενο (¶). Βλέπετε στη θέση
που το συγκεκριμένο σύμβολο υπάρχει στο iso-8859-7, η Microsoft ήθελε τον
χαρακτήρα αλλαγής παραγράφου (το γνωστό ανάποδο Ρ με δυο γραμμές), για να
λειτουργεί σωστά το Word. Το άλφα τούτο λοιπόν το τοποθέτησε σε μια άσχετη
θέση, που ευτυχώς στο iso-8859-7 δεν υπάρχει και τίποτα χρήσιμο (μια
περίεργη μεγάλη παύλα αμφίβολης χρησιμότητας), οπότε με γραμματοσειρές που
απλά έχουν το εν λόγω άλφα και στις δύο θέσεις ο κόσμος κάνει γενικά τη
δουλειά του.

  Επαναλαμβάνω ότι είμαστε αρκετά τυχεροί, καθώς άλλες γλώσσες έχουν
περισσότερα από ένα iso-8859-x, ή/και μια κωδικοσελίδα τελείως άσχετη με
αυτά. Η κεντρική ιδέα είναι ότι, αν ο μικρός Γιαννάκης στείλει στον μικρό
Κωστάκη ένα κείμενο σε iso-8859-7, ο μικρός Κωστάκης έχει μια πολύ μεγάλη
πιθανότητα να είναι σε θέση να το διαβάσει.

  Όλα αυτά συμβαίνουν στον μαγικό κόσμο των 8 bit. Κάπου στην πορεία όμως ο
κόσμος αποφάσισε ότι 256 χαρακτήρες δεν είναι αρκετοί, και ότι δεν έχει
νόημα να υπάρχουν εκατοντάδες διαφορετικές κωδικοποιήσεις για τις γλώσσες
του κόσμου. Έτσι άρχισαν να αναπτύσσονται δύο πρότυπα για συνολική
κωδικοποίηση πολλών γλωσσών, το ISO-10646-1 και το Unicode. Πολύ σύντομα οι
δύο οργανισμοί που τα ανέπτυσσαν (ISO και Unicode Consortium, αντίστοιχα),
συνειδητοποίησαν ότι ο κόσμος δεν χρειάζεται δύο διαφορετικά τέτοια πρότυπα,
και συμφώνησαν να έχουν πάντα τους ίδιους χαρακτήρες στις ίδιες θέσεις. Το
Unicode είναι ένα σύνολο χαρακτήρων των 16-bit, ενώ το iso-10646-1 ορίζει
δύο σύνολα χαρακτήρων: το UCS2 (16-bit) και το UCS4 (32-bit). Προφανώς, το
Unicode και το UCS2 έχουν θέσεις για 65536 χαρακτήρες. Το UCS4 ορίζεται να
έχει 65536 planes των 65536 χαρακτήρων το καθένα, αλλά σήμερα
χρησιμοποιείται μόνο το πρώτο plane, το BMP (Basic Multilingual Plane).
Ακούγεται ότι το UCS4 πρόκειται να αντικατασταθεί από κάτι μικρότερο, αλλά
δεν μας απασχολεί ιδιαίτερα έτσι κι αλλιώς.

  Τέλος, αρκετά σημαντικό είναι και το UTF-8. Το UTF-8 είναι μια μεταβλητού
μεγέθους αναπαράσταση των Unicode/UCS2 (μέχρι 3 bytes) και του UCS4 (μέχρι 6
bytes). Έχει πολλές επιθυμητές ιδιότητες, αλλά η σπουδαιότερη είναι ότι το
ASCII αναπαρίσταται με ένα byte με τις ίδιες τιμές, κάτι που βοηθάει στην
ομαλή μετάβαση από τις κωδικοποιήσεις που χρησιμοποιούν ένα byte μόνο. Για
περισσότερες λεπτομέρειες, υπάρχει το RFC 2279.

  Εμάς πώς μας επηρεάζουν όλα αυτά; Το iso-8859-7 είναι το παρόν, ενώ το
Unicode/UCSx/UTF-8 είναι το μέλλον. Ουσιαστικά εμείς θα πρέπει να
φροντίσουμε ότι τα διάφορα υπολογιστικά συστήματα υποστηρίζουν το iso-8859-7
τώρα, και να βοηθήσουμε στην όλο και μεγαλύτερη επικράτηση του Unicode για
το μέλλον. Λέω «να βοηθήσουμε» γιατί δεν είμαστε οι μόνοι που μας απασχολεί
αυτό, καθώς η συγκεκριμένη κωδικοποίηση σαφώς και δεν είναι μόνο για τους
Έλληνες.

  Λοιπόν, αυτά. Ελπίζω να μην σας κούρασα...

Βασίλης Βασαΐτης

-- 
Vasilis Vasaitis
vvas at hal.csd.auth.gr





More information about the I18ngr mailing list