Κατ αρχήν για όσους θέλουν να έχουν μια γρήγορη εικόνα για το θέμα:
ASCII: εφτάμπιτη κωδικοποίηση. Αυτό σημαίνει ότι έχουμε έναν χώρο 2^7=128 χαρακτήρων. Περιλαμβάνει πολλούς ειδικούς χαρακτήρες, σύμβολα όπως οι παρενθέσεις και οι πράξεις, τούς αραβικούς αριθμούς και τα πεζά και κεφαλαία λατινικά γράμματα.
Το γεγονός ότι είναι εφτάμπιτος σε έναν κόσμο που η βάση είναι πολλαπλάσια τών οκτώ μπιτ είναι ευτύχημα γιατί επιτρέπει την επεκτασιμότητά του με φυσικό τρόπο. Συγκεκριμένα αν το επιπλέον μπιτ είναι 0 τότε έχουμε τον κώδικα ASCII αν είναι 1 τότε έχουμε 128 επιπλέον συνδυασμούς.
ISO/IEC 8859
Ο πιο προφανής τρόπος επέκτασης για να βολέψεις επιπλέον χαρακτήρες. Το κακό είναι ότι είσαι περιορισμένος σε 128 μόνο επιπλέον χαρακτήρες πράγμα ιδιαίτερα περιοριστικό. Για να βολευτούν περισσότερες γλώσσες στην πραγματικότητα δεν έχουμε ένα πρότυπο αλλά 15. Από αυτά εμάς μάς νοιάζουν πρακτικά δύο:
Latin-1 ή ISO-8859-1: Βολεύει τις δυτικοευρωπαϊκές γλώσσες. Μάς νοιάζει γιατί είναι το συνηθέστερο που (κακώς) χρησιμοποιείται
Latin/Greek ή ISO-8859-7: Μάς νοιάζει γιατί είναι για το ελληνικό αλφάβητο. Βεβαίως δεν περιλαμβάνει για παράδειγμα πολυτονικό.
Αυτός ο πληθωρισμός από ISO φυσικά δημιουργεί τεράστιο πρόβλημα. Για κερασάκι στην τούρτα έχουμε και επιπλέον κωδικοποιήσεις όπως η Windows-1253 που διαφέρει σε λίγα σημεία όπως η θέση τού «Ά» (κεφαλαίο άλφα με τόνο)
Η προσπάθεια να δραπετεύσουμε από τον περιορισμό αυτόν είναι το unicode. Δυστυχώς δεν έχουμε ένα unicode αλλά πολλά...
Η πρώτη ιδέα είναι να χρησιμοποιήσουμε 16 μπιτ αντί 8 μπιτ, οπότε θεωρητικά έχουμε 2^16=65536 χαρακτήρες. Στην πράξη δεν έχουμε αρκετούς χαρακτήρες για να καλύψουμε τις σύγχρονες ανάγκες. Ταυτοχρόνως το σύστημα δεν είναι συμβατό με τον ASCII. Η αίσθησή μου είναι ότι όλος ο σχεδιασμός είναι λάθος αλλά αρκετοί ήταν αρκετά επίμονοι και δουλευταράδες για να φροντίσουν να το επεκτείνουν. Οι δύο κυριότερες εκδοχές είναι ίσως το UTF-32 και το UTF-16
UTF-32: Χρησιμοποιούνται σταθερά 32 μπιτ. Αυτό μπορεί να ακούγεται απλό αλλά δημιουργεί περιπλοκές. Διαφωτιστικό είναι το άρθρο τής βικιπαίδειας. Ως συνήθως στα διαφωτιστικά άρθρα τής βικιπαίδειας είναι τοποθετημένη μια δαμόκλειος σπάθη. Εκτός από τα εγγενή μειονεκτήματά του η μη υιοθέτησή του από την Microsoft, το σκότωσε. Τα unix-οειδή όπως θα δούμε βρήκαν μια πολύ καλύτερη λύση. Επίσης το HTML5 αποφάσισε (σωστά κατά την γνώμη μου) να μην το στηρίξει. Οπότε μιλάμε για ένα νεκρό σύστημα.
UTF-16: Χρησιμοποιεί 16άδες μπιτ αλλά μπορεί να φτιάχνει χαρακτήρες και με δύο 16άδες μπιτ. Οπότε μπορεί να υποστηρίξει 1112064 χαρακτήρες, έναν ικανοποιητικό πλήθος. Όπως και το UTF-32 δεν είναι συμβατό με τον ASCII ενώ είναι φυσική επέκταση τού UCS-2 (χρησιμοποιούσε σταθερά 16μπιτ). Σε σχέση με το UTF-32 αντικειμενικά υπερτερεί μόνο από την άποψη ότι ένας μεγάλος αριθμός συμβόλων αρκείται στα 16 μπιτ αντί να απαιτεί 32 μπιτ. Προσωπικά για το κακό (κατά την γνώμη μου) ISO-8859 μπορώ να βρω καλές δικαιολογίες. Το επίσης κακό UTF-32 μπορώ κάπως να το δικαιολογήσω. Το UTF-16 δυσκολεύομαι πολύ να το δικαιολογήσω. Τόσο πολύ σπανίζουν οι λογικοί άνθρωποι σε αυτόν τον κόσμο;
UTF-8: Το unicode όπως θα έπρεπε εξ αρχής να σχεδιαστεί. Απολύτως συμβατό με ASCII. Πολύ απλούστερο στην πράξη. Αποτελείται από 8μπιτα κομμάτια και ένας χαρακτήρας θεωρητικά μπορεί να πιάνει από 1 μπάϊτ (όταν ανήκει στον ASCII) ως και 6 μπάϊτ (με 2^31 τέτοιους χαρακτήρες). Έτσι μπορεί να υποστηρίζει έναν πληθυσμό χαρακτήρων ανάλογο με το UTF-32.
Μερικά σημεία που κάποιος θα μπορούσε να κάνει ενστάσεις:
Το ISO-8859 και UTF-32 έχουν σταθερό μήκος/χαρακτήρα: Στην πράξη αυτό είναι πολύ λιγότερο χρήσιμο από όσο ακούγεται. Στις ελάχιστες πραγματικά χρήσιμες περιπτώσεις υπάρχουν έτσι και αλλιώς πολύ σοβαροί λόγοι να μείνει κάποιος πιστός στο ASCII και να μην χρησιμοποιήσει unicode, ούτε επιπλέον χαρακτήρες.
Το ISO-8859-7 αντιμετωπίζει ισότιμα τα λατινικά με τα ελληνικά: Καθόλου. Αν ήταν το μόνο πρότυπο θα μπορούσε ίσως να υποστηριχθεί κάτι τέτοιο, αλλά καθώς υπάρχουν πολλά και όλα έχουν τα ίδια λατινικά αλλά διαφέρουν στούς άλλους χαρακτήρες, τα ελληνικά είναι σε πολύ ισχυρότερη θέση στο UTF-8. Περισσότερο ισότιμη είναι η αντιμετώπιση στο UTF-16 αλλά και εκεί δεν υπάρχει κανένα αντικειμενικό όφελος για τα ελληνικά. Είναι περισσότερο η δικαιοσύνη τού είδους «να ψοφήσει η κατσίκα τού γείτονα».
Το UTF-16 επιτρέπει σε περισσότερους χαρακτήρες να αναπαρασταθούν μόνο με 16μπιτ, και είναι έτσι οικονομικότερο για τις σχετικές γλώσσες (τής άπω ανατολής): Μόνο για το καθαρό κείμενο σε μια τέτοια γλώσσα ισχύει κάτι τέτοιο. Στην πράξη η συχνή χρήση ASCII χαρακτήρων κάνει το UTF-8 οικονομικότερο, επιπλέον διαφωνώ με αυτό το είδος οικονομίας (δείτε παρακάτω)
Το ISO-8859 είναι πολύ οικονομικότερο. Στα ελληνικά χρειαζόμαστε διπλάσιο όγκο για το UTF-8: Το ISO-8859-7 δεν είναι unicode με όττι μειονέκτημα σημαίνει αυτό και με το UTF-16 φυσικά δεν υπάρχει αντικειμενικό όφελος. Σε κάθε περίπτωση όμως αυτός είναι τελείως άντι-unix τρόπος σκέψης. Η λογική τού unix είναι να απομονώνουμε ένα πρόβλημα στα απλά του μέρη ώστε να εφαρμόσουμε την καλύτερη δυνατή λύση για κάθε μέρος του ξεχωριστά. Έτσι μπορούμε να χρησιμοποιήσουμε την καλύτερη κωδικοποίηση που είναι η UTF-8 και αν θέλουμε οικονομία σε όγκο απλούστατα να συμπιέσουμε το κείμενο, κάτι που θα προσφέρει έτσι και αλλιώς πολύ μεγαλύτερη οικονομία από οποιοδήποτε ISO-8859. Αυτή είναι η καλύτερη λύση από κάθε άποψη.
Το UTF-8 είναι σήμερα η κυρίαρχη κωδικοποίηση στο διαδίκτυο και στα unix-οειδή, και όχι άδικα κατά την γνώμη μου. Από κάθε πραγματικά αντικειμενική άποψη υπερτερεί. Η πραγματική μου απορία είναι πώς δεν έχει κυριαρχήσει πλήρως ακόμα και γιατί η ηλεκτρονική αλληλογραφία άργησε τόσο πολύ να το υποστηρίξει. Το λογικό θα ήταν να υιοθετηθεί πολύ πιο συνειδητά και να αφήσουμε επιτέλους τα ISO-8859 και UTF-16.