Mi blog lah! Το ιστολόγιό μου

14Feb/060

Γραμματοσειρές στο ελεύθερο λογισμικό

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

Μια τυπική εγκατάσταση Ubuntu 5.10 εγκαθιστά

1Feb/060

Αναβάθμιση του gnome.gr για χρήση utf-8

Πριν από λίγα λεπτά έγινε η αναβάθμιση του gnome.gr για την χρήση utf-8 παντού. Πιστεύω ότι όλα δουλεύουν τώρα ικανοποιητικά σε σχέση με τις κωδικοποιήσεις, ο Πέτρος είναι αυτός που θα βγάλει το φίδι από την τρύπα για τις δοκιμές. Εδώ καταγράφουμε κάποια προβλήματα που αντιμετωπίσαμε.
Η προεπιλεγμένη κωδικοποίηση στις περισσότερες εγκαταστάσεις mysql είναι latin1 και το collation (ταξινόμηση) είναι latin1_swedish_ci. Η επιλογή της σουηδικής ταξινόμησης φαίνεται να είναι γενική και δεν έχει σχέση με προσωπικές επιλογές του διαχειριστή της βάσης μας. Αν το CMS σας είναι

24Jan/060

Unofficial Ubuntu 5.10 (Breezy Badger) Starter Guide

Ο οδηγός του Ubuntu 5.10 είναι διαθέσιμος από την ιστοσελίδα http://easylinux.info/wiki/UbuntuΑποτελεί ενημέρωση του ubuntuguide.org του Chua Wen Kiat.
Πρόσθεσα τα

How to add keyboard layouts for other languages

How to add the Keyboard Layout Indicator applet

How to type extended characters

Τι περισσότερο μπορεί να μπει στον οδηγό;

26Jul/050

░░░▒▒▒▓▓▓███

►☺◄ ۩ ۞

This is a demonstration of the use of Unicode on your Website. These above are fonts, not images. You should be able to view them if you have the appropriate fonts installed. Windows XP users should be able to view them by default if they use Mozilla Firefox.

When you build a Website, you have the option to choose the encoding of the text. Typically people choose iso-8859-1, windows-1251 or similar encodings limited to just 255 characters. If you choose, however, utf-8, you can add any character from a repertoire of several thousand characters, from any written language, including symbols and dingbats.

4Dec/04Off

Ελληνικά στην αλληλογραφία, μέρος πρώτο

Πρέπει να λαμβάνετε γράμματα / ανακοινώσεις από μερικούς δικτυακούς τόπους όπου η κωδικοποίηση για τα ελληνικά δεν είναι σωστή, είτε στο σώμα του μηνύματος, είτε στην κεφαλίδα (From: "Ανακοίνωση" ).

Συγκεκριμένα, δεν καθορίζεται η κωδικοποίηση οπότε είναι θέμα εξ ορισμού ρυθμίσεων του παραλήπτη για να δει το αποτέλεσμα.

Ας δούμε πως μπορείτε μέσα από μια εφαρμογή PHP να στείλετε αλληλογραφία με ελληνικά. Το ίδιο μπορεί να γίνει και από άλλες γλώσσες, όπως Perl και Python.

<?php
include('Mail.php');
include('Mail/mime.php');

$from = "From: \"" . mb_encode_mimeheader('Όνομα Αποστολέα') . "\" < αποστολέας στο gmail τελεία com>";
$to = mb_encode_mimeheader('Όνομα Παραλήπτη') . " < παραλήπτης στο gmail τελεία com>";
$subject = 'Θέμα γράμματος';
$body = 'Περιεχόμενο του γράμματος.';

mb_send_mail($to, $subject, $body, $from);
?>

Το γράμμα που θα παραχθεί θα μοιάζει με

Από: Όνομα Αποστολέα < αποστολέας στο gmail τελεία com>
Προς: Όνομα Παραλήπτη < παραλήπτης στο gmail τελεία com>
Θέμα: Θέμα γράμματος

Περιεχόμενο του γράμματος.

Απαιτεί την εγκατάσταση του πακέτου php-mbstring που το έχουν όλες οι καλές διανομές Linux. Διαφορετικά είναι δυνατόν
να έχετε το ίδιο αποτέλεσμα αλλά θα κάνετε τα παραπάνω χειρωνακτικά.

Ακόμα, πρέπει να ρυθμίσετε το /etc/php.ini με τα παρακάτω:

[mbstring]
; language for internal character representation.
; Neutral σημαίνει Unicode
mbstring.language = Neutral

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = UTF-8

; http input encoding.
mbstring.http_input = UTF-8

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = UTF-8

; enable automatic encoding translation accoding to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
mbstring.encoding_translation = On

; substitute_character used when character cannot be converted
; one from another
; σημαίνει ότι στην μετατροπή αν κάτι πάει στραβά, θα εκτυπώσει των κωδικό U+xxxx του χαρακτήρα.
mbstring.substitute_character = long;

Αν είστε χρήστης της εφαρμογής phplist, ενημερώστε τη σελίδα αυτή.

Σημείωση: Όλα τα παραπάνω είναι σε κωδικοποίηση utf-8 (Unicode).

13Sep/04Off

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.

Λοιπόν;

Switch to our mobile site