X + UTF-8

Vasilis Vasaitis vvas at hal.csd.auth.gr
Sun Apr 27 01:42:01 EEST 2003


On Sat, Apr 26, 2003 at 10:27:06PM +0300, V13 wrote:
Content-Description: signed data
> Έκανα κάποιες προόδους στην UTF-ο-ποίηση των X στο linux-άκι..
> 
> α) Το xterm χρησιμοποιεί UTF-8 όταν έχεις κατάλληλο locale (Εννοείται *ΠΡΙΝ* 
> ξεκινήσεις το xterm). Φυσικά χρειάζεται και κατάλληλη unicode γραμματοσειρά 
> (ISO-10646-1). Για δοκιμή:
> 
> $ export LC_ALL=el_GR.UTF-8
> $ xterm -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1

  Υπάρχει και το ‘uxterm’ πάντως, που είναι ένα shell script που
αναλαμβάνει να θέσει το κατάλληλο locale και να καλέσει το xterm με τα
ανάλογα ορίσματα.

> β) Το vim 6.1 υποστηρίζει κανονικά και με το νόμο UTF-8 αρκεί να'χει γίνει 
> compile με --enable-multibyte. Αυτό φαίνεται με 'vim --version' και πρέπει να 
> εμφανίζει '+multi_byte'. Και το vim λαμβάνει υπόψη του το locale οπότε ούτε 
> εκεί χρειάζεται τίποτα extra.

  Αντίστοιχα, ο emacs, για να παίζει πάντα σε κατάσταση UTF-8, νομίζω
θέλει τα παρακάτω στο .emacs:

	(set-keyboard-coding-system 'utf-8)
	(set-terminal-coding-system 'utf-8)

  Για να αλλάζει μεταξύ ISO-8859-7 και UTF-8, ανάλογα με το locale,
χρειάζεται κάπως πιο πολύπλοκο κώδικα· αν κάποιος το θέλει, ας πει να
τον στείλω κι αυτόν.

  Πάντως, ο GNU emacs τουλάχιστον (για τον XEmacs δε γνωρίζω), δεν
έχει αυτή τη στιγμή πλήρη υποστήριξη για Unicode· βασικά, αυτό που
συμβαίνει είναι ότι χρησιμοποιεί εσωτερικά ένα δικό του σύνολο
χαρακτήρων (αυτό του Mule), εξαιτίας του οποίου αποτυγχάνει να
καταλάβει ότι, π.χ., το «Α» του ISO-8859-7 είναι το ίδιο γράμμα με το
«Α» του UTF-8. Η μετάβαση σε UTF-8 θα είναι μια από τις σημαντικότερες
αλλαγές στον emacs 22, ο οποίος και αναμένεται.

> γ) Το pine δεν κατάφερα να το κάνω να γράφει σωστά σε UTF-8. Παρόλο που όλα τα 
> κάνει σωστά μετράει λάθος τους χαρακτήρες της κάθε σειράς... Για να βλέπει 
> ISO-8859-7 κάτω από UTF xterm θέλει στο Setup -> Config:
> 
>     * Να είναι επιλεγμένο το pass-control-characters-as-is
>     * Το character-set να είναι utf-8
>     * Στο display-filters να μπει:
>         _CHARSET(ISO-8859-7)_ /usr/bin/iconv -t utf-8 -f ISO-8859-7
> 
> (Δουλεύει όμως μια χαρά με το κόλπο του luit που περιγράφεται παρακάτω, αρκεί 
> να'χει ρυθμιστεί ώστε να δουλεύει σωστά με ISO-8859-7)
> 
> δ) Για το pico ισχύουν τα ίδια με το pine. Διαβάζει σωστά αλλά γράφει με τα 
> ίδια προβλήματα.

  Γενικά, φαίνεται ότι τα προγράμματα του τερματικού θα είναι και τα
τελευταία που θα προσαρμοστούν στα νέα δεδομένα. Αυτό οφείλεται στο
ότι η παραδοχή (χαρακτήρας == byte == μια στήλη στην οθόνη) είναι καλά
εδραιωμένη σε πολλά από αυτά.

> ε) Τα Χ έχουν ένα προγραμματάκι με το όνομα 'luit' το οποίο μπορεί να φανεί 
> πολύ χρήσιμο αν υπάρχουν προγράμματα που δεν καταλαβαίνουν από unicode. Η 
> λειτουργία του έχει ως εξής...
>  Ανοίγεις ένα unicode xterm και αλλάζεις το locale (π.χ.):
> 	export LC_ALL=el_GR.ISO-8859-7
> 
>  Στη συνέχεια τρέχεις το luit και αυτό σου ξεκινάει ένα άλλο shell 
> λειτουργώντας σαν ενδιάμεσος. Ότι γράφεις εσύ και το παίρνει το xterm σαν 
> Unicode το στέλνει στο luit και αυτό στο 2ο shell σαν ISO-8859-7 και ότι 
> παίρνει από το shell το στέλνει στο xterm κάνοντας την ανάποδη μετατροπή.
> 
>  Το 'man 7 charsets'  (στο σημείο όπου μιλάει για το ISO-2022) βοηθάει αρκετά 
> στη κατανόηση της man page του luit.
> 
> Παράδειγμα είναι το epic4 το οποίο δεν σκαμπάζει από unicode. Σε ένα unicode 
> xterm:
> 
> $ export TERM=vt320 # Το θέλει το epic για Ελληνικά
> $ export LC_ALL=el_GR.ISO-8859-7
> $ luit -v
> G0 is ASCII, G1 is Unknown (94), G2 is ISO 8859-7, G3 is Unknown (94).
> GL is G0, GR is G2.
> $ epic

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

> στ) Το rxvt δυστυχώς δεν έχει ακόμα support για unicode (ούτε η 2.7.10 που'ναι 
> η τελευταία beta) αλλά το έχει στα TODO.
> 
> ζ) Σε λίγες δοκιμές που έκανα με gtk-1 προγράμματα (π.χ. gimp) είδα ότι 
> δουλεύουν μια χαρά αρκεί να χρησιμοποιείς unicode γραμματοσειρά όπου θέλεις 
> να'χεις Ελληνικά.

  Αρκεί επίσης να μην έχεις καθόλου ονόματα αρχείων με ISO-8859-7, και
ιδίως καταλόγους· το παράθυρο επιλογής αρχείων τα παίζει κάπως αν
συναντήσει μη επιτρεπτούς χαρακτήρες για το εκάστοτε locale.

  Καλή δουλειά η αναφορά, μπράβο.

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





More information about the Linux-greek-users mailing list