iso-8859-7 ή….. utf-8;

Ασφαλώς και utf-8!

Δυστυχώς δεν έχει περάσει ακόμα το μήνυμα για προτίμηση του Unicode (κωδικοποίηση utf-8) αντί του iso-8859-7. Πριν από μερικά χρόνια υπήρχαν σημαντικές εφαρμογές που δεν μπορούσαν να απεικονίσουν αλφαριθμητικά με κωδικοποίηση utf-8, ωστόσο αυτό έχει αλλάξει και δενυπάρχει δικαιολογία μη-μετάβασης.

  1. Με την κωδικοποίηση iso-8859-7 μπορείς να απεικονίσεις μόνο
    αγγλικά και ελληνικά, με αποτέλεσμα τα διεθνή WebMail (Yahoo, Hotmail,
    κτλ) να μην είναι ποτέ σε θέση να δείξουν ελληνικά (διότι ως διεθνή δεν
    είναι σε θέση να θέσουν την ελληνική μόνο κωδικοποίηση, οπότε δεν
    θέτουν καμία!). Ίσως είναι καλύτερα κατανοητό ότι σε μια σελίδα HTML
    μπορεί να καθοριστεί μόνο μια (καθολική) κωδικοποίηση. Αυτή τη στιγμή
    το Yahoo Mail δεν καθορίζει κωδικοποίηση στις σελίδες με αποτέλεσμα να
    πρέπει να κάνετε εξωτερικές ρυθμίσεις για την εμφάνιση ελληνικών
    (View/Encoding/…). Προσπαθούν να το φτιάξουν αλλά φαίνεται ότι θα δυσκολευτούν λόγω της πολύ μεγάλης εγκατεστημένης βάσης. Η ίδια κατάσταση επικρατεί και στα Hotmail, GMX.net, κτλ. Σε
    αντίθεση, το “νέο” GMail χρησιμοποιεί utf-8 :).
  2. Τα νέα πρότυπα που βασίζονται σε XML θεωρούν ως εξ ορισμού
    κωδικοποίηση το utf-8, εκτός και αν τους καθορίσεις iso-8859-7…
    Προτιμούν utf-8 για κάποιο λόγο.
  3. Όλες οι νέες διανομές υποστηρίζουν locales utf-8, όπως και τα
    γραφικά περιβάλοντα GNOME (από 2.0+) και KDE (από ακόμα πιο παλιά).
  4. Είναι εύκολη η μετατροπή ενός αρχείου από iso-8859-7 σε utf-8 με την εντολή iconv. Απλά εκτελέστε iconv -f iso-8859-7 -t utf-8 < mygreek.txt > mygreekUTF.txt. Το ίδιο μπορεί να γίνει και σε ένα δικτυακό τόπο (iconv στα αρχεία και μετά προσθήκη <meta content=“text/html; charset=UTF-8” http-equiv=“content-type”> στην αρχή τους). Το ίδιο στο περιεχόμενο μιας βάσης (π.χ. CMS), αποτύπωση/dump της βάσης, iconv και τέλος εισαγωγή ξανά.

Αν ένα γράμμα φαίνεται σαν

  1. “…φτι…”. Γράφτηκε και στάλθηκε ως utf-8 χωρίς όμως το πρόγραμμα ηλεκτρονικής αλληλογραφίας να μπει στον κόπο να καθορίσει την κωδικοποίηση. Ο
    παραλήπτης (δηλ. το πρόγραμμά του) δεν είχε ιδέα πως να το
    αποκωδικοποιήση και εμφάνισε σε δεκαδική μορφή τους κωδικούς των
    ελληνικών χαρακτήρων. Με αναφορά στον πίνακα Unicode θα μπορούσε
    κάποιος να διαβάσει το γράμμα. Αν το πρόγραμμα του παραλήπτη έδειχνε το
    γράμμα σε “ωμή/raw” μορφή, θα μπορούσε κάποιος να αλλάξει την
    κωδικοποίηση σε utf-8 για να το δει.
  2. “..ΞΈΞ­ΞΌΞ±Ο�Ξ± Ξ±Ξ³…”, (δηλαδή “πολλά Ξ”). Σημαίνει ότι το κείμενο είναι πραγματικά σε μορφή utf-8 αλλά πρόγραμμα ηλεκ. αλληλογραφίας/φυλλομετρητής/κτλ το δείχνει ως iso-8859-7. Προσωρινή λύση, αλλάξτε κωδικοποίησε στο πρόγραμμα σε utf-8.
  3. “…¼Î±Ï„α αγορά..”, (δηλαδή “πολλά Ι και διαλυτικά/καπελάκι). Όπως παραπάνω, αλλά το δείχνει ως iso-8859-1. Προσωρινή λύση, αλλάξτε κωδικοποίησε στο πρόγραμμα σε utf-8.
  4. “…?????????….”, (δηλαδή πολλά αγγλικά ερωτηματικά). Αυτή
    είναι η χειρότερη κατάσταση μιας και το κείμενο μετατράπηκε σε μορφή
    7-bit με αποτέλεσμα να χαθεί για πάντα σημαντική πληροφορία για την
    απεικόνισή του.

Τι να κάνουμε;

  1. Ρίχνουμε μια ματιά στο πρόγραμμα ηλεκ. αλληλογραφίας μας και το
    ρυθμίζουμε να στέλνει γράμματα με την κωδικοποίηση utf-8, ακόμα και αν
    ποτέ δεν γράψουμε ελληνικά (όταν απαντάμε σε γράμμα που έχει και
    ελληνικά, με αυτόν το τρόπο τα διατηρούμε. hint: lgu). Για παράδειγμα,
    στο Mozilla Thunderbird είναι
    Εργαλεία/Επιλογές/Γραμματοσειρές/Γλώσσες/Εισερχόμενα-Εξερχόμενα και
    επιλέγουμε “Unicode (UTF-8)” και στα δύο.
  2. Ρυθμίζουμε τον εξυπηρετητή Web μας να μην καθορίζει, σώνει και
    καλά, την κωδικοποίηση σε iso-8859-7 όταν επιστρέφει σελίδες στους
    πελάτες. Για την αποφυγή παρεξηγήσεων (σε άλλους νεώτερους δικτυακούς
    τόπους), δείτε στο http://nls.hellug.gr/. Η σελίδα δείχνει σωστά τα
    ελληνικά χωρίς να χρειαστεί να αλλάξουμε κωδικοποίηση (σε iso-8859-7).
    Πως το ξέρει; Διότι ο εξυπηρετητής Web χώνει την κωδικοποίηση όταν
    επιστρέφει την κεφαλίδα. Εκτελέστε telnet nls.hellug.gr 80, έπειτα γράψτε GET / HTTP/1.0, σε νέα γραμμή γράψτε Host: nls.hellug.gr
    και πατήστε Enter δύο φορές. Θα δείτε στη κεφαλίδα το άσχημο
    iso-8859-7… Τυπικό σφάλμα όταν γράφετε τη σελίδα σε utf-8, ρυθμίζετε
    την κωδικοποίηση μέσω HTML σε UTF-8 ενώ βλέπετε ακαταλλαβίστικα με τα
    πολλά ΞΞΞ (δείτε παραπάνω).
  3. Στη μεταβλητή του Linux LANG βάζουμε el_GR.UTF-8 αντί του σκέτου el_GR. Το σκέτο σημαίνει el_GR.ISO-8859-7. Εξ ορισμού βάζει την κατάληξη .UTF-8, το κάνει για κάποιο λόγο.
  4. Σε κονσόλα (όχι xterm/konsole/gnome-terminal/…) μπορείτε να
    γράψετε/διαβάσετε ελληνικά ακολουθώντας τα του
    xhref=”http://www.ellak.gr/modules.php?op=modload&name=phpWiki&file=index&pagename=GreekWritingInLinux” mce_href=”http://www.ellak.gr/modules.php?op=modload&name=phpWiki&file=index&pagename=GreekWritingInLinux”
    title=”Γράψιμο ελληνικών στην κονσόλα του Linux”>GreekWritingInLinux.
    (Αν δεν δουλέψει με την μία, βρείτε τη λύση και κάντε την γνωστή
    (νομίζω έχει αλλάξει κάτι μικρό στο πακέτο kbd από τότε)).
  5. Σε xterm/konsole/gnome-terminal ασφαλώς επιλέξουμε μια
    γραμματοσειρά fixed που περιλαμβάνει ελληνικά (η εξ ορισμού του
    X.org/XFree86 έχει).
  6. Στο Putty καθορίζουμε στις επιλογές Window/Translation την κωδικοποίηση UTF-8.
  7. Ξεκινάμε flame στη λίστα συνδρομητών μας για το πόσο καλό είναι το utf-8 και πόσο αναχρονιστικό το iso-8859-7.

Λοιπόν;

5 comments

  • anonymous

    Σωστά τα λές Σίμο… Εκτός από ένα: οι webmail clients είναι μία πολύ πονεμένη ιστορία.

    1) Υπάρχουν οι γνωστοί “αγγλικοί” όπως yahoo.com , hotmail.com κ.λ. Αυτοί συνήθως θεωρούν ότι έχουν να κάνουν με latin1, οπότε και βάζουν εencoding iso-8859-1 στις σελίδες τους.

    2) Υπάρχουν οι “ελληνικοί” όπως yahoo.gr, νομίζω και pathfinder.gr, in.gr κ.λ. που θεωρούν ότι έχουν να κάνουν μόνο με iso-8859-7.

    Αποτέλεσμα: στους “ξένους” αν αλλάξεις με το χέρι το encoding της σελίδας από τον browser τα βλέπεις όλα μια χαρά (και αν έχεις IE να ξετσεκάρεις το Auto), αφού έτσι κι αλλιώς τα αγγλικά είναι ίδια σε iso-8859-1 και utf-8. Στα ελληνικά webmail, η λύση αυτή δεν υφίσταται αφού ή θα βλέπεις το mail που σου έστειλαν utf-8 σωστά και όλες τις επιλογές γύρω-γύρω κινέζικα ή το ανάποδο…

    Πράγμα που μου κάνει μεγάλη εντύπωση, αν σκεφτεί κανείς ότι open source webmail clients, όπως το squirel mail (πολύ σωστά) έχουν interface σε utf-8 και να έρθει κάποιο mail με άλλο encoding το μετατρέπουν αυτόματα σε utf-8…

    my 2 eurocents.
    Panayotis (http://g-metrics.com/)

  • anonymous

    Επίσης, ένα μικρό tip: Υπάρχουν φορές που κάποιος στέλνει ένα κείμενο σε iso-8859-7 και το μέχρι να φτάσει στα χέρια μας, μεσολαβεί ένα πρόγραμμα που θεωρεί ότι αυτό είναι iso-8859-1 και ένα άλλο που δουλεύει μόνο με utf-8. Το αποτέλεσμα είναι να λάβουμε τελικά ένα κειμενο πού είναι utf-8 αλλά δεν διαβάζεται (έχει γερμανικούς, γαλλικούς κ.λ. χαρακτήρες).

    (Παράδειγμα: ανάλογα με τα locale settings των Windows, διάφορα copy-paste από το ένα πρόγραμμα στο άλλο…)

    Η λύση είναι απλή. Έστω ότι έχουμε ένα αρχείο που ονομάζεται A.txt και παρούσιάζει τα παραπάνω συμπτώματα. Τότε το :

    cat A.txt | iconv -f utf-8 -t iso-8859-1 | iconv -f iso-8859-7 -t utf-8 >B.txt

    θα μας δώσει ένα αρχείο με ολοκάθαρα ελληνικά utf-8!


    Panayotis (http://g-metrics.com/)

  • simos74

    Για αυτό και οι χρήστες πρέπει να μεταβούν σε κάποιο άλλο σύστημα για Webmail.

    Όντως, οι “εντοποιημένες” εκδόσεις του Yahoo καθορίζουν παντού τις τοπικές μη-Unicode κωδικοποιήσεις, με αποτέλεσμα να μεγενθύνεται το μπάχαλο.

    Οπότε,

    έξω: yahoo, hotmail, gmx (εκτός μέσα από POP3)
    μέσα: gmail, myrealbox

    άλλα;

  • simos74

    Αυτό το πράγμα συνέβει στην ελληνική μετάφραση των docbook-xml stylesheets, με την λεπτομέρεια ότι οι χαρακτήρες έχουν κωδικοποιηθεί με την μορφή “φ…”.

    Υποστηρίζει την κωδικοποίηση αυτή το iconv; Πως ονομάζεται;

  • simos74

    Πολύ ενδιαφέρον.

    Στο παραπάνω μήνυμα, το LiveJournal το μετέτρεψε αυτόματα στην κανονική μορφή, δηλαδή “φ” αντί αυτού που ήθελα να εμφανίσω: “& # 966 ;” (αφαιρέστε τα διαστήματα).

%d bloggers like this: