Οι υπολογιστές δεν μπορούν να κατανοήσουν αυτούσιο κείμενο. Αντίθετα, κάθε χαρακτήρας αναπαριστάται από κάποιον αριθμό. Συνήθως, κάθε σύνολο αριθμών που χρησιμοποιείται για την αναπαράσταση αλφαβήτων και χαρακτήρων (γνωστό και ώς σύστημα κώδικα, κωδικοποίηση ή σύνολο χαρακτήρων) περιορίζεται σε μέγεθος εξαιτίας των περιορισμών hardware του υπολογιστή.
Η πιο κοινή (ή τουλάχιστον ευρύτερα αποδεκτή) κωδικοποίηση είναι η ASCII (American Standard Code for Information Interchange). Θεωρείται ότι η ASCII είναι το πιο επιτυχημένο πρότυπο λογισμικού που έχει εφαρμοστεί. Η σύγχρονη ASCII τυποποιήθηκε το 1986 (ANSI X3.4, RFC 20, ISO/IEC 646:1991, ECMA-6) από το Αμερικανικό Ίδρυμα Προτύπων (American National Standards Institute).
Η ASCII είναι αυστηρώς των επτά bit, που σημαίνει ότι χρησιμοποιεί συνδυασμούς bit που αντιπροσωπεύονται από επτά δυαδικά ψηφία, τα οποία προσφέρουν ένα εύρος δεκαδικών από 0 έως 127. Αυτά συμπεριλαμβάνουν 32 μη-ορατούς χαρακτήρες ελέγχου, οι περισσότεροι από τους οποίους βρίσκονται στο διάστημα 0 έως 31, με τον τελικό χαρακτήρα ελέγχου DEL, διαγραφή, στο 127. Οι χαρακτήρες από 32 έως 126 είναι οι ορατοί: το διάστημα, σημεία στίξης, Λατινικά γράμματα και αριθμοί.
Το όγδοο bit στην ASCII χρησιμοποιήθηκε αρχικά ως bit ισοτιμίας για τον έλεγχο σφαλμάτων. Αν αυτό δεν απαιτείται, παραμένει 0. Αυτό σημαίνει ότι με την ASCII, κάθε χαρακτήρας αναπαριστάται από ένα byte.
Παρά το γεγονός ότι η ASCII ήταν επαρκής για την επικοινωνία στη σύγχρονη Αγγλική, σε άλλες ευρωπαϊκές γλώσσες που χρησιμοποιούν τονισμένους χαρακτήρες, η κατάσταση ήταν δυσκολότερη. Τα πρότυπα ISO 8859 αναπτύχθηκαν για να καλύψουν τις συγκεκριμένες ανάγκες. Ήταν συμβατά προς τα πίσω με την ASCII, αλλά αντί να μην καταχωρούν τιμή στο όγδοο bit, το χρησιμοποίησαν για να επιτρέψουν την αναπαράσταση 127 επιπλέον χαρακτήρων σε κάθε κωδικοποίηση. Οι περιορισμοί του ISO 8859 έγιναν σύντομα εμφανείς και υπάρχουν τη στιγμή αυτή 15 παραλλαγές του προτύπου ISO 8859 (8859-1 έως και 8859-15). Πέραν του συμβατού με ASCII, εύρους byte αυτών των συνόλων χαρακτήρων, υπάρχουν συχνά διενέξεις μεταξύ των γραμμάτων που αναπαριστώνται από κάθε byte. Για να γίνουν τα πράγματα ακόμα πιο πολύπλοκα στη δια-λειτουργικότητα των κωδικοποιήσεων χαρακτήρων, κάποιες εκδόσεις των Microsoft Windows χρησιμοποιούν την κωδικοποίηση Windows-1252 αντί εκείνης των Δυτικο-ευρωπαϊκών γλωσσών. Πρόκειται για ένα υπερσύνολο του ISO 8859-1, που ωστόσο διαφοροποιείται κατά πολλούς τρόπους. Παρόλα αυτά, τα συγκεκριμένα σύνολα διατηρούν την ASCII συμβατότητά τους.
Η απαραίτητη ανάπτυξη εντελώς διαφορετικού τύπου κωδικοποιήσεων του ενός byte για μη-Λατινικά αλφάβητα, όπως η EUC (Extended Unix Coding, Εκτεταμένη Κωδικοποίηση Unix) που χρησιμοποιείται για την Ιαπωνική και Κορεατική γλώσσα (και εν μέρει την Κινεζική) συνέβαλε στη σύγχυση, καθώς άλλα λειτουργικά συστήματα χρησιμοποιούσαν ακόμα διαφορετικά σύνολα χαρακτήρων για τις ίδιες γλώσσες, όπως π.χ. τα Shift-JIS και ISO-2022-JP. Οι χρήστες που ήθελαν να εμφανίσουν κυριλλικά ιδεογράμματα έπρεπε να επιλέξουν μεταξύ του KOI8-R για τη Ρωσική και Βουλγαρική ή του KOI8-U για την Ουκρανική, αλλά και των άλλων κυριλλικών κωδικοποιήσεων όπως το αποτυχημένο ISO 8859-5, και το κοινό Windows-1251. Όλα τα παραπάνω σύνολα χαρακτήρων ελάχιστα διατηρούσαν τη συμβατότητα με το ASCII (αν και οι κωδικοποιήσεις KOI8 ταξινομούν τους κυριλλικούς χαρακτήρες με Λατινική σειρά, έτσι ώστε σε περίπτωση που αφαιρεθεί το όγδοο bit, το κείμενο εξακολουθεί να είναι κατανοητό σε ένα τερματικό ASCII, μέσω αναγωγής σε διαφορετικό αλφάβητο).
Αυτό οδήγησε σε σύγχυση καθώς και σε ολοκληρωτική αδυναμία πολυγλωσσικής επικοινωνίας, κυρίως μεταξύ διαφορετικών αλφαβήτων. Εισαγωγή στο Unicode.
Το Unicode αποδεσμεύεται από το κλασσικό όριο του ενός byte των συνόλων χαρακτήρων, έτσι ώστε ακόμα και με δύο byte ανά χαρακτήρα να γίνεται εφικτή η αναπαράσταση μέχρι 65.536 χαρακτήρων. Παρόλο που το πλήθος αυτό είναι εξαιρετικά μεγάλο συγκριτικά με κωδικοποιήσεις των επτά και οκτώ bit, δεν επαρκεί για σύνολα χαρακτήρων σχεδιασμένα για σύμβολα, γραφές τις οποίες χρησιμοποιούν ακαδημαϊκοί και σύμβολα που χρησιμοποιούνται μόνο στα μαθηματικά ή άλλα εξειδικευμένα πεδία.
Το Unicode έχει χαρτογραφηθεί με πολλούς διαφορετικούς τρόπους, αλλά οι δύο συνηθέστεροι είναι οι UTF (Unicode Transformation Format) και UCS (Universal Character Set). Ένας αριθμός ο οποίος ακολουθεί το UTF υποδεικνύει το πλήθος των bit που αποτελούν μια μονάδα , ενώ ο αριθμός που ακολουθεί το UCS υποδεικνύει το πλήθος των byte. Το UTF-8 είναι πλέον το περισσότερο διαδεδομένο μέσο ανταλλαγής κειμένου Unicode, σαν αποτέλεσμα του ακριβούς 8-bit χαρακτήρα του και αποτελεί το αντικείμενο που εξετάζει το παρόν κείμενο.
Το UTF-8 είναι μια κωδικοποίηση χαρακτήρων μεταβλητού μήκους και αυτό στη συγκεκριμένη περίπτωση σημαίνει ότι χρησιμοποιεί από 1 έως 4 byte για κάθε σύμβολο. Έτσι, το πρώτο byte του UTF-8 χρησιμοποιείται για την κωδικοποίηση ASCII, δίνοντας στο σύνολο χαρακτήρων πλήρη συμβατότητα προς τα πίσω με την κωδικοποίηση ASCII. Το UTF-8 σημαίνει ότι χαρακτήρες ASCII και Λατινικοί χαρακτήρες ανταλλάσσονται με μια μικρή αύξηση στο μέγεθος των δεδομένων καθώς χρησιμοποιείται μόνο το πρώτο byte. Χρήστες Ανατολικών αλφαβήτων όπως το Ιαπωνικό, στους οποίους έχει διατεθεί μεγαλύτερο εύρος byte, δυσαρεστούνται, καθώς αυτό σημαίνει ότι έχουν πλεονασμό δεδομένων έως και 50%.
Το UTF-8 σας επιτρέπει να εργάζεστε σε ένα πολύ-γλωσσικό περιβάλλον συμβατό με τα διεθνώς αποδεκτά πρότυπα, με συγκριτικά χαμηλό πλεονασμό δεδομένων. Το UTF-8 είναι ο τρόπος που προτιμάται για τη μετάδοση μη-ASCII χαρακτήρων μέσω Internet, Email, IRC και σχεδόν κάθε άλλο μέσο. Παρόλα αυτά, πολλοί θεωρούν ότι γίνεται κατάχρηση του UTF-8 στην online επικοινωνία. Είναι καλό να γνωρίζουμε τη νοοτροπία ενός συγκεκριμένου καναλιού, μιας mailing list ή Usenet group σχετικά με αυτό πριν να χρησιμοποιήσουμε
Τώρα που κατανοήσατε τις αρχές πίσω από το Unicode, μπορείτε να ξεκινήσετε να χρησιμοποιείτε το UTF-8 στο σύστημά σας.
Οι πρωταρχικές απαιτήσεις του UTF-8 είναι να έχετε εγκατεστημένη μια έκδοση του glibc με υποστήριξη της εθνικής γλώσσας. Το μέσο που συνιστάται για αυτό τον σκοπό είναι το αρχείο
Στη συνέχεια, πρέπει να αποφασίσουμε αν μια εντοπιότητα UTF-8 είναι ήδη διαθέσιμη για τη γλώσσα μας, ή χρειάζεται να δημιουργήσουμε μία εμείς.
(Αντικαταστήστε το "en_GB" με την επιθυμητή σας εντοπιακή ρύθμιση) # locale -a | grep 'en_GB' en_GB en_GB.utf8
Από την έξοδο αυτής της εντολής, παίρνουμε το αποτέλεσμα με μια κατάληξη παρόμοια του
(Αντικαταστήστε το "en_GB" με την επιθυμητή σας εντοπιακή ρύθμιση) # localedef -i en_GB -f UTF-8 en_GB.utf8
Ένας άλλος τρόπος για να συμπεριλάβουμε μια εντοπιότητα UTF-8 είναι να την προσθέσουμε στο αρχείο
en_GB.UTF-8/UTF-8
Παρόλο που μπορεί πλέον να έχετε αποφασίσει να χρησιμοποιήσετε το UTF-8 σε ολόκληρο το σύστημά σας, ο συγγραφέας δεν συνιστά τη ρύθμιση του UTF-8 για τον root χρήστη. Αντίθετα, είναι προτιμότερο να ρυθμίσετε την εντοπιότητα στο
export LANG="en_GB.utf8" export LC_ALL="en_GB.utf8"
setenv LANG "en_GB.utf8" setenv LC_ALL "en_GB.utf8"
Τώρα αποσυνδεθείτε και επιστρέψτε πάλι για να εφαρμόσετε τις αλλαγές. Θέλουμε αυτές οι μεταβλητές περιβάλλοντος να ισχύουν σε ολόκληρο το περιβάλλον, και για αυτό είναι καλύτερα να αποσυνδεθούμε και να επιστρέψουμε ή τουλάχιστον να κάνουμε source το
Την περίοδο που το Unicode άρχισε να διαδίδεται στον κόσμο του λογισμικού, τα σύνολα χαρακτήρων πολλαπλών byte δεν ταίριαζαν απόλυτα σε γλώσσες προγραμματισμού όπως η C, στην οποία είναι γραμμένα πολλά προγράμματα που χρησιμοποιούνται σε καθημερινή βάση. Ακόμα και σήμερα, κάποια προγράμματα δεν είναι ικανά να χειριστούν κατάλληλα το UTF-8. Ευτυχώς τα περισσότερα είναι ικανά!
Υπάρχουν αρκετές επιλογές NLS στο μενού ρύθμισης του πυρήνα Linux, αλλά είναι σημαντικό να μην μπερδευτούμε! Κατά κύριο λόγο, αυτό που χρειάζεται να κάνετε είναι να ενσωματώσετε στον πυρήνα υποστήριξη NLS UTF-8 και να αλλάξετε την προκαθορισμένη επιλογή NLS σε utf8.
File Systems --> Native Language Support --> (utf8) Default NLS Option <*> NLS UTF8(Επίσης <*> άλλα σύνολα χαρακτήρων που χρησιμοποιούνται από το FAT σύστημα αρχείων σας ή από Joilet CD-ROMs)
Αν θέλετε να φορτώσετε NTFS partitions, ίσως χρειαστεί να ορίσετε μια
Για μετατροπή της κωδικοποίησης των ονομάτων αρχείων μπορεί να χρησιμοποιηθεί η
# emerge --ask app-text/convmv # convmv -f τρέχουσα-κωδικοποίηση -t utf-8 όνομα-αρχείου
Για μετατροπή του περιεχομένου αρχείων, χρησιμοποιήστε την εφαρμογή
(Αντικαταστήστε το iso-8859-1 με το σύνολο χαρακτήρων από το οποίο κάνετε την μετατροπή) (Ελέγξτε εάν το αποτέλεσμα είναι λογικό) # iconv -f iso-8859-1 -t utf-8 όνομα-αρχείου(Μετατρέψτε ένα αρχείο, θα χρειαστεί να δημιουργήσετε νέο αρχείο) # iconv -f iso-8859-1 -t utf-8 όνομα-αρχείου > νέο-αρχείο
Η
Για να ενεργοποιήσετε το UTF-8 στην κονσόλα, πρέπει να επεξεργαστείτε το αρχείο
Η μεταβλητή
(Αλλάξτε το "uk" στην τοπική σας διάταξη πληκτρολογίου) KEYMAP="-u uk"
Είναι μια καλή σκέψη να προσθέσετε την
(Αποφεύγουμε την τοποθέτηση αυτών των βιβλιοθηκών στο γενικό μας αρχείο με το --oneshot) # emerge --oneshot --verbose --ask sys-libs/ncurses sys-libs/slang
Επίσης, χρειάζεται να επανενσωματώσουμε τα πακέτα που δείχνουν σε αυτές και πλέον οι αλλαγές στην USE έχουν εφαρμοστεί. Το εργαλείο που χρησιμοποιούμε (
# revdep-rebuild --soname libncurses.so.5 # revdep-rebuild --soname libslang.so.1
Όλα τα κυριότερα γραφικά περιβάλλοντα παρέχουν πλήρη υποστήριξη Unicode, και δεν απαιτείται επιπλέον ρύθμιση από αυτές που ήδη αναφέρθηκαν σε αυτό τον οδηγό. Αυτό συμβαίνει διότι τα toolkit γραφικών (Qt ή GTK+2) αναγνωρίζουν το UTF-8. Κατά συνέπεια, όλες οι εφαρμογές που τρέχουν πάνω σε αυτά θα αναγνωρίζουν επίσης το UTF-8.
Οι εξαιρέσεις αυτού του κανόνα είναι τα Xlib και GTK+1. Το GTK+1 απαιτεί ένα iso-10646-1 FontSpec στο ~/.gtkrc, για παράδειγμα
style "user-font" { fontset="-misc-fixed-*-*-*-*-*-*-*-*-*-*-iso10646-1" } widget_class "*" style "user-font"
Εάν μια εφαρμογή υποστηρίζει Qt και GTK+2 GUI, το GTK+2 GUI θα αποδώσει γενικά καλύτερα στο Unicode.
Οι γραμματοσειρές TrueType υποστηρίζουν το Unicode και οι περισσότερες από τις γραμματοσειρές που συνοδεύουν το Xorg έχουν εκπληκτική υποστήριξη χαρακτήρων, παρόλο που, όπως είναι προφανές, δεν έχει δημιουργηθεί κάθε ένα από τα ιδεογράμματα που υποστηρίζει το Unicode για αυτή τη γραμματοσειρά. Για να ενσωματώσετε γραμματοσειρές (συμπεριλαμβανομένης της ομάδας Bitstream Vera) με υποστήριξη γραμμάτων της Ανατολικής Ασίας στο X, σιγουρευτείτε ότι έχετε ορίσει την
Επίσης, πολλά πακέτα γραμματοσειρών στο Portage αναγνωρίζουν το Unicode.
# emerge terminus-font intlfonts freefonts cronyx-fonts corefonts
Οι διαχειριστές παραθυρικού περιβάλλοντος, που δεν βασίζονται στο GTK ή το Qt, έχουν κατά κανόνα πολύ καλή υποστήριξη Unicode αφού συνήθως κάνουν χρήση της βιβλιοθήκης Xft για τη διαχείριση γραμματοσειρών. Αν ο διαχειριστής παραθύρων σας δεν χρησιμοποιεί την Xft για γραμματοσειρές, μπορείτε να χρησιμοποιήσετε την FontSpec που αναφέρεται στην προηγούμενη ενότητα, ως γραμματοσειρά Unicode.
Εξομοιωτές τερματικών που κάνουν χρήση της Xft και υποστηρίζουν Unicode είναι δυσκολότερο να συναντήσετε. Πέρα από το Konsole και το gnome-terminal, οι καλύτερες επιλογές για Portage είναι
defutf8 on
Οι Vim, Emacs και Xemacs παρέχουν πλήρη υποστήριξη UTF-8 ενώ έχουν και ενσωματωμένη δυνατότητα αναγνώρισης αρχείων UTF-8. Για περισσότερες πληροφορίες σχετικά με το Vim, δοκιμάστε το
Το Nano δεν παρέχει προς το παρόν υποστήριξη UTF-8, παρόλο που αυτό σχεδιάζεται εδώ και καιρό. Με λίγη τύχη, στο μέλλον τα πράγματα θα αλλάξουν. Τη στιγμή που γράφεται αυτό το κείμενο, η υποστήριξη UTF-8 βρίσκεται στο CVS του Nano, και θα πρέπει να συμπεριλαμβάνεται στην επόμενη διανομή του.
Το
Τα κελύφη C,
Από το 0.8.10, το Irssi υποστηρίζει πλήρως το UTF-8, παρόλο που απαιτείται από τον χρήστη να ορίσει μια επιλογή.
/set term_charset UTF-8
Σε κανάλια, όπου οι χαρακτήρες εκτός ASCII συχνά ανάγονται σε μη-UTF-8 σύνολα χαρακτήρων, η εντολή
Ο mail agent Mutt παρέχει πολύ καλή υποστήριξη Unicode. Για να χρησιμοποιήσετε UTF-8 με τον Mutt προσθέστε τα ακόλουθα στο
set send_charset="utf8"(κωδικοποίηση των εξερχόμενων) set charset="utf8"(κωδικοποίηση εμφάνισης)
Περισσότερες πληροφορίες μπορείτε να βρείτε στο
Υπάρχουν πολλά websites για δοκιμή του UTF-8. Τα
Όταν χρησιμοποιείτε κάποιον web browser μόνο κειμένου, βεβαιωθείτε ότι το τερματικό που χρησιμοποιείτε αναγνωρίζει το Unicode.
Αν ορισμένοι χαρακτήρες εμφανίζονται σαν κουτάκια με γράμματα ή αριθμούς στο εσωτερικό τους, αυτό σημαίνει ότι η γραμματοσειρά σας δεν έχει αντίστοιχο χαρακτήρα για το σύμβολο ή ιδεόγραμμα που θέλει να το UTF-8. Αντί αυτού εμφανίζει ένα κουτί με το δεκαεξαδικό κώδικα του UTF-8 συμβόλου.
Στο X μπορείτε να επωφεληθείτε τα πλήκτρα που δεν χρησιμοποιούνται (
Για να ενεργοποιήσετε τα dead keys στο X, θα χρειαστείτε μια διάταξη που τα υποστηρίζει. Οι περισσότερες Ευρωπαϊκές διατάξεις πληκτρολογίου έχουν ήδη ded keys με την προκαθορισμένη μεταβλητή. Ωστόσο αυτό δεν ισχύει για διατάξεις Βορείου Αμερικής. Αν και σε κάποιο βαθμό υπάρχει ασυνέπεια μεταξύ των διατάξεων, η πιο εύκολη λύση είναι να χρησιμοποιείται μια διάταξη της μορφής π.χ. "en_US" αντί για "us". Η διάταξη ορίζεται στο
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbLayout" "en_US"# Αντί για απλά "us" (Άλλες επιλογές Xkb εδώ) EndSection
Η αλλαγή αυτή χρειάζεται επανεκκίνηση του X server. Για να εφαρμόσετε την αλλαγή τώρα χρησιμοποιήστε το εργαλείο
Είναι πιθανώς ευκολότερο να περιγραφούν τα dead keys με παραδείγματα. Παρόλο που το αποτέλεσμα εξαρτάται από την εντοπιότητα, η βασική ιδέα παραμένει η ίδια ανεξαρτήτως εντοπιότητας. Τα παραδείγματα περιέχουν UTF-8, επομένως για να τα δείτε χρειάζεται είτε να ορίσετε τον browser σας να εμφανίσει τη σελίδα ως UTF-8, είτε να έχετε ήδη μια UTF-8 εντοπιότητα ρυθμισμένη.
Όταν πατώ δεξί Alt (ή AltGr) και [ ταυτόχρονα, και μετά τα αφήνω, πατώντας στη συνέχεια a, εμφανίζεται το 'ä'. Όταν πατώ δεξί Alt (ή AltGr) και [ ταυτόχρονα, και μετά e, εμφανίζεται το 'ë'. Όταν πατώ δεξί Alt (ή AltGr) και ; ταυτόχρονα εμφανίζεται το 'á', και όταν πατώ δεξί Alt (ή AltGr) και ; ταυτόχρονα, μετά τα αφήνω, πατώντας στη συνέχεια e, εμφανίζεται το 'é'.
Πατώντας δεξί Alt, Shift και [ ταυτόχρονα, μετά αφήνοντας αυτά και πατώντας το a, εμφανίζεται το Σκανδιναβικό 'å'. Παρόμοια, πατώντας δεξί Alt, Shift και [ ταυτόχρονα, μετά αφήνοντας
Το δεξί Alt μπορεί να χρησιμοποιηθεί μόνο για αλφαβητικά πλήκτρα. Για παράδειγμα, δεξί Alt και m, εμφανίζεται το μικρό Ελληνικό μι: 'µ'.