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

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

τάλογο και τα τοπο

Αυτό το πράγμα είναι (valid) κείμενο utf-8 με τους χαρακτήρες που δείχνει (εκτεταμένοι λατινικοί). Προήλθε από από τη μετατροπή πραγματικού ελληνικού κειμένου utf-8 που το σύστημα θεωρεί ότι στην πραγματικότητα ήταν windows-1252 και μας το μετέτρεψε σε utf-8.

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

iconv -f utf-8 -t windows-1252 < mydatabase.dump > mydatabase-converted.dump

Για να επιβεβαιώσετε ότι το αρχείο είναι έγκυρο utf-8, εκτελέστε

iconv -f utf-8 -t utf-8 < mydatabase-converted.dump

Είναι πιθανό μερικοί χαρακτήρες να είναι προβληματικοί και να χρειάζεται διόρθωση με το χέρι. Για παράδειγμα, ίσως δείτε το χαρακτήρα ύ να μην μπορεί να μετατραπεί σωστά. Αυτό ενδέχεται να έχει σχέση με κάποιο σφάλμα στην εντολή iconv. Αν μπορέσετε και φτιάξετε ένα μικρό αρχείο που να εμφανίζει το πρόβλημα, παρακαλώ επικοινωνήστε μαζί μου.

Κάθε βάση και πίνακας στην MySQL μπορεί να έχει κωδικοποίηση και collation. Αν δεν το καθορίσετε, θα ληφθεί η κωδικοποίηση και το collation από την εγκατάσταση (από το mysqld) που είναι: latin1 και σουηδική ταξινόμηση!

Οπότε στην μετατροπή, πρέπει να αλλάξετε την κωδικοποίηση/ταξινόμηση στον συγκεκριμένο πίνακά σας. Από το phpMyAdmin μπορείτε να αλλάξετε γενικά αυτά τα δύο για την βάση σας. Όμως, για κάθε πίνακα συγκεκριμένα πρέπει να φτιάξετε ένα πρόγραμμα εντολών που εκτελεί

ALTER TABLE jos_zoomfiles DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Όταν τα κάνετε όλα αυτά, προσέξτε να έχετε εγκαταστήσει νέα έκδοση του CMS σας που να έχει σωστή υποστήριξη UTF-8. Για παράδειγμα, Joomla αντί Mambo. Υπάρχει ελληνικός δικτυακός τόπος από τους έλληνες χρήστες της Joomla.

Επισκεφτείτε λοιπόν το http://www.gnome.gr/

Για να μάθετε περισσότερα για τις κωδικοποιήσεις στη βάση mysql, δείτε το άρθρο MySQL Character Set Support.

Leave a Reply

%d bloggers like this: