Ροή

Πόσο Unicode είναι το blog σου;

RC_Andreas

Administrator
Joined
3 June 2010
Μηνύματα
4,599
Βαθμολογία
9
Points
38
Location
Ελλάδα
Website
www.eltube.gr
unicode1.gif

Με μεγάλη μου χαρά, θέλω να σας κάνω αυτή την ερώτηση και αν η απάντηση σας είναι όπως η δική μου -πριν γίνω εντελώς unicode- να σας δώσω λίγη βοήθεια για να πετύχετε την απόλυτη unicodeοποίηση του blog σας.

Τι έστι Unicode για άσχετους σαν εμένα

Τα κείμενα που βλέπετε στο notepad, στην επιφάνεια εργασίας του λειτουγικού σας, στο Internet, παντού, δεν είναι κείμενα, αλλά bytes. Γνωστό αυτό. Τα παλιά τα χρόνια, όταν η γιαγιάδες δεν έφτιαχναν σούσι αλλά τυρόπιτες για τα εγγόνια, οι προγραμματιστές ήταν κυρίως Αγγλόφωνοι. Το περιεχόμενο των προγραμμάτων τους ήταν αγγλικό επίσης. Έτσι χρησιμοποιούσαν εναν ειδικά προσαρμοσμένο κώδικα που μετέτρεπε τα χτυπήματα στο πλήκτρα του πληκτρολογίου, σε μια σειρά bit. Ο κατάλογος που καθόριζε τη σειρά των bit για κάθε γράμμα του λατινικού αλφάβητου, ονομάστηκε κωδικοσελίδα.

Στην πορεία, κάποιοι άλλοι εξελιγμένοι λαοί, που μιλούσαν και έγραφαν σε άλλη γλώσσα, ήθελαν να προγραμματίσουν και αυτοί. Πολλοί απο αυτούς χρησιμοποιούσαν κοινό αλφάβητο με τους αγγλόφωνους. Δηλαδή το λατινικό. Έτσι, δεν είχαν πρόβλημα. Όσοι απο αυτούς -βλ. Γερμανούς- είχαν μικροδιαφορές με το βασικό λατινικό αλφάβητο (οι Γερμανοί έχουν το umlaut ενα είδος τόνου), ήθελαν στα πληκτρολόγια τους να υπάρχουν 3 γράμματα με τον τόνο τους. Έτοιμα. Έτσι έφτιαξαν μια γερμανική κωδικοσελίδα. Σταδιακά, ακόμα και πιο αρχαίοι λαοί -βλ. Έλληνες, Ισραηλίτες κλπ- ήθελαν να προγραμματίσουν και να βλέπουν τα κείμενα στη γλώσσα τους. Το πρόβλημα εδώ, ήταν πως αυτοί οι περίεργοι λαοί δεν χρησιμοποιούσαν το λατινικό αλφαβητο. Έτσι, έφτιαξαν κι αυτοί μια δική τους κωδικοσελίδα! Στην πορεία βέβαια, κάποιοι άλλοι, έφτιαξαν και άλλη μια, πάλι για τα ελληνικά γιατί -λέγανε- ήταν καλύτερη απο την πρώτη.

Η Βαβέλ είχε ιδρυθεί. Διότι το ελληνικό λειτουργικό σύστημα με την ελληνική κωδικοσελίδα «φορτωμένη» δεν μπορούσε να τρέξει ενα πρόγραμμα σε άλλη κωδικοσελίδα. Αν το έτρεχε, έβλεπε αστεράκια κλπ. Ασε που κάθε φορά που παραγόταν ενα πρόγραμμα σε άλλη γλώσσα, έπρεπε να προγραμματιστεί απο την αρχή με την νεα κωδικοσελίδα! ΧΑΟΣ.

Κάποια στιγμή, είπαν να φτιάξουν μια ενιαία κωδικοσελίδα για όλες τις γλώσσες. Αλλά δεν γινόταν? Το μέγεθος της κάθε κωδικοσελίδας, ήταν περιορισμένο και δεν μπορούσε να μεγαλώσει για να δεχτεί περαιτέρω χαρακτήρες -π.χ. το ελληνικό αλφάβητο-, έτσι σκέφθηκαν να καταργήσουν μια και καλή τις κωδικοσελίδες και να πάνε παρα πέρα. Να κάνουν κάτι νέο.


To UNICODE

Unicode ονομάζεται ενα κοινώς αποδεκτό πρωτόκολλο κωδικοσελίδας. Ενα αρχείο για όλες τις γλώσσες -including κινέζικα, γιαπωνέζικα κλπ- το οποίο δεν αλλάζει και ισχύει για όλους τους προγραμματιστές. Έτσι, για κάθε ακολουθία bit, αντιστοιχεί ενα συγκεκριμένο γράμμα το οποίο είναι παγκοσμίως αποδεκτό. Έτσι, ενα υποτιθέμενο ρώσικο πρόγραμμα, μπορεί να «καλεί» ρώσικους χαρακτήρες όταν τρέχει στην Ρωσία και ρωσικους όταν τρέχει σε ενα PC στην Ελλάδα. Πριν το Unicode, αντι για ρώσικους χαρακτήρες δεν θα έτρεχε καν το πρόγραμμα ή θα παρουσίαζε ακαταλαβίστικους χαρακτήρες καθώς η ελληνική κωδικοσελίδα, δεν θα γνώριζε σε ποιους χαρακτήρες αναφέρεται το software.

Το Unicode λοιπόν, είχε ΧΩΡΟ. Θα πρέπει εδώ να αναφέρουμε, πως δεν υπάρχει μόνο ένα Unicode αλλά μπόλικα (και εδώ δεν τα βρήκανε). UTF-8 είναι το επικρατέστερο έναντι π.χ. του UTF-16. Εμείς θα ασχοληθούμε με το UTF-8.


Οι σπασίκλες που δεν θέλανε

Για πολλούς και διάφορους λόγους, πολλοί προγραμματιστές απο την Αμερική κυρίως, επειδή θα έπρεπε να ξαναγράψουν απο την αρχή τα προγράμματα τους, ωστε να αντιλαμβάνονται την νέα κατάσταση, αποφάσισαν να μην κάνουν τίποτα και να αφήσουν τα πράγματα ως είχαν. Η ερώτηση είναι βέβαια, μα πως θα το κατάφερναν αυτό; Τα προγράμματα τους δεν θα δούλευαν σε λειτουργικά Unicode! Δυστυχώς για εμάς, τα πράγματα δεν είναι ακριβώς έτσι.

Το περιεχόμενο της ενιαίας «κωδικοσελίδας» unicode, έβαλε τους λατινικούς χαρακτήρες πρώτους-πρώτους (τιμή μας, σαν δεύτερους έβαλε τους ελληνικούς!). Έτσι, τα μικρότερα bit (που πρίν χωρούσαν στην αγγλική κωδικοσελίδα) συνέπεσαν με την ίδια θέση με αυτήν που έχουν στο Unicode! Έτσι όταν ενα πρόγραμμα καλέσει τον πρώτο χαρακτήρα της παλαιού τύπου κωδικοσελίδας σε ενα Unicode περιβάλλον, θα καλέσει και πάλι τον ίδιο χαρακτήρα! Οπότε no problemo για τους Αμερικάνους φίλους μας. Αγγλικό το software και τέρμα.

Η λύση που δίνουν τα Windows XP για παράδειγμα, βρίσκεται στα Regional Settings. Εκεί μπορούμε να επιλέξουμε ποια κωδικοσελίδα -με το παλιό σύστημα- θα φορτώνεται, για προγράμματα που δεν είναι Unicode. Έτσι ενα πρόγραμμα ελληνικής παραγωγής που δεν είναι Unicode, θα μπορεί να προβάλλει τα κείμενα του στα ελληνικά μέσω αυτού του τρίκ.

regional-settings-xp.jpg

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


Unicode και Internet ή πονάνε ωρέ τα παληκάρια;

Οι σελίδες του Internet, αποτελούν ουσιαστικά ενα πρόγραμμα του οποίου ο κώδικας είναι γραμμένος σε μια γλώσσα (π.χ. PHP, HTML, ASP, ColdFusion) προγραμματισμού. Πολύ συχνά δε, αυτά τα προγράμματα -σελίδες- συνδέονται με βάσεις δεδομένων για να αποθηκεύουν τα δεδομένα που εισάγει ο χρήστης. Επίσης, για να τρέξουν θα πρέπει να εκμεταλευθούν τους ονομαζόμενους Application Servers (PHP, ActiveServerPages κλπ). Τελικά για να προβληθούν τα αποτελέσματα αυτών των προγραμμάτων, θα χρειαστεί απο μεριάς χρήστη, ενα πρόγραμμα προβολής, δηλαδή ο internet browser.

Όπως και στα προγράμματα υπολογιστή, έτσι και στα απομακρυσμένα αυτά προγράμματα, υπάρχουν αυτοί που επέλεξαν να προγραμματίσουν και να αποθηκεύσουν σε Unicode, υπάρχουν και the others που επέμειναν στο παλιό μοτίβο των κωδικοσελίδων. Ευτυχώς οι σύγχρονοι Internet browsers επιτυγχάνουν να εντοπίσουν την μέθοδο κωδικοποίησης χαρακτήρων, ακόμα και όταν αυτή δεν δηλώνεται στην σελίδα που προβάλλει ο browser. Έτσι, εμείς βλέπουμε ελληνικά όπως και να έχει.Αλλά?


WordPress και Unicode = LFE

To WordPress αποτελεί ενα πρόγραμμα ουσιαστικά, γραμμένο σε PHP. Η δουλειά του είναι να αποθηκεύει να αντλεί δεδομένα απο μια βάση δεδομένων και να προβάλλει τα αποτελέσματα στον browser του επισκέπτη. Οι συγγραφείς του λοιπόν, geeks γαρ, επέλεξαν -και πολύ καλά έκαναν- να συμμορφωθούν και να ακολουθήσουν το σύγχρονο ρεύμα. Δηλαδή να γράψουν όλο αυτό το πρόγραμμα σε Unicode.

Για να είναι όμως όλη η εμπειρία Unicode, θα πρέπει οπουδήποτε γίνεται επεξεργασία, προβολή η αποθήκευση των δεδομένων, να γίνεται χρήση Unicode. Εαν ο browser του χρήστη δεν αναγνωρίζει τι εστί Unicode, δεν μπορεί να προβάλλει τα κείμενα. Επίσης, εαν η βάση δεδομένων δεν είναι ρυθμισμένη πως αυτά που καλείται να αποθηκεύσει ειναι Unicode, θα τα ? καταστρέψει! Εξ? ίσου σημαντικό -αν όχι πιο σημαντικό- είναι το που γίνεται η ίδια η επεξεργασία των κειμένων που θα αποθηκευθούν στη βάση μέσω του WordPress.

Για παράδειγμα, ανοίγουμε ενα πρόγραμμα που δεν αναγνωρίζει τι εστί Unicode και γράφουμε ενα κείμενο στα ελληνικά. ΟΚ, σύμφωνα με το παραπάνω τρικ των Windows XP, εμείς θα βλέπουμε ελληνικά. Εαν τώρα πάρουμε το κείμενο με copy-paste και το πάμε στο editor του WordPress, θα δούμε καλικάτζαρους (η καταπληκτική αυτή εμπειρία μπορεί να γίνει και λόγος γκρεμίσματος του PC απο τον τρίτο). Τους οποίους καλικάντζαρους θα στείλουμε στην βάση δεδομένων η οποία αναμένει Unicode!

Σε μια άλλη περίπτωση, μπορεί να δημιουργήσουμε ενα κείμενο σε Unicode aware πρόγραμμα, να το αποθηκεύσουμε ως Unicode και αργότερα να του κάνουμε ενα μικρό edit. To edit όμως το κάνουμε με εναν άλλο editor ο οποίος και ναι μεν μπορεί να βλέπει αρχεία Unicode αλλά εξ ορισμού αποθηκεύει με το παλιό σύστημα (ANSI λέγεται).

Αυτό που πρέπει να γίνει αντιληπτό, είναι πως απο οπουδήποτε περνάει ενα κείμενο -δημιουργία, αποθήκευση, προβολή- θα πρέπει η υποδομή να είναι Unicode.


Η προσωπική εμπειρία

Απο πόνο ορμώμενος, θα μοιραστώ μαζί σας δυο παθήματα μου.

Όταν χρειάστηκε να μεταφέρω τα περιεχόμενα της βάσης (mysql) απο εναν host σε εναν άλλο, πήρα backup απο τον παλιό host όλο το περιεχόμενο της βάσης. Η παλιά βάση έτρεχε πλήρως Unicode και αποθήκευε έτσι. Το backup μιας βάσης, αποτελεί ενα αρχείο txt. Άνοιξα το αρχείο με το notepad, και είδα κανονικά τα ελληνικούλια. Στη θέση τους. Έπρεπε όμως να κάνω ενα search and replace μέσα του, ωστε να αντικαταστήσω την παλιά διεύθυνση του blog με την νέα. Επέλεξα για αυτή τη δουλειά, ενα προγραμματάκι με όνομα SCR που κάνει ΑΚΡΙΒΩΣ ΑΥΤΟ. Έχει δυο πεδία, στο ενα βάζεις τι ψάχνεις και στο άλλο με τι θα αντικατασταθεί. Πατάς GO και περιμένεις. Μετά την αντικατάσταση, εισήγαγα το αρχείο αυτό στην νέα mysql. ΚΑΤΑΣΤΡΟΦΗ! Όλα τα κείμενα είχαν γίνει καλικάτζαροι. Δεν μπορούσα να καταλάβω το γιατί. Η νέα και η παλιά βάση δεδομένων ήταν Unicode, το WordPress επίσης, είχα ανοίξει το αρχείο και τα ελληνικά ήταν μια χαρά! Μα τι λάθος είχα κάνει;

Μετά απο άπειρες προσπάθειες να βρώ το σφάλμα αλλού, κάποια λάμπα άναψε πάνω απο το κεφάλι μου, η οποία μου υπέδειξε ενα βήμα που είχα ξεχάσει. Το SCR. Έτσι, αποφάσισα να κάνω την αντικατάσταση των κειμένων, με τη χρήση του fully Unicode, Dreamweaver 8. Η αντικατάσταση ολοκληρώθηκε, η αποθήκευση επίσης. Ξαναεισήγαγα το αρχείο στην νέα βάση και ΟΛΑ ΚΑΛΑ. Τα ελληνικά στην θέση τους και η καρδιά μου επίσης.

Αυτό αποδικνύει πως ακόμα και το παραμικρό edit πρέπει να γίνεται με Unicode εφαρμογή. Πάντα. Always!

Το δεύτερο «πάθημα» χωρίς οστόσω σημαντικές παρενέργειες, συνέβη απο τότε που άρχισα να χρησιμοποιώ διάφορους editors για το WordPress, εκτος του ενσωματωμένου που ειναι Unicode. Αν και τα ελληνικά πάντα ήταν εντάξει στα post μου, όταν έκανα view source μέσα απο τον browser, έβλεπα πως αντί για ελληνικά υπήρχαν «περιγραφές τους» όπως φαίνεται στην παρακάτω εικόνα.

SOURCE - no-greek-letters-in-source-unicode.jpg

Στην σελίδα μου βέβαια, το post μεταφραζόταν απο τον browser σε ελληνικά. Περιέργως όσα post είχα κάνει με τον εγγενή editor του WordPress δημιουργούσαν σωστό κώδικα. Δηλαδή έβλεπα κανονικά ελληνικά. Είχα μπερδευτεί?

Ο FCKEditor για τον οποίο έγραψα τα καλύτερα λόγια, είχε το ίδιο πρόβλημα. Ήθελα λύση! Την οποία βρήκα απο ελληνική πηγή στο forum του XOOPS Greece. Έμαθα λοιπόν, πως η σωστή συμπεριφορά, είναι να αποθηκεύονται αμιγώς ελληνικοί χαρακτήρες και πως αυτό θεωρείται κανονικά Unicode. Η λύση για τον FCKEditor ήταν μια απλή προσθήκη κάποιων γραμμών στο αρχείο ρυθμίσεων. Εαν χρησιμοποιείτε το Dean?s FCKEditor Plugin for WordPress, τότε το αρχείο ρυθμίσεων είναι το deans_fckeditor_js.php και όχι το αρχείο που αναφέρουν τα παιδιά στο forum του XOOPS.

Τα οφέλη; Συνταρακτικά. Διότι η αποθύκευση του παραπάνω συρφετού στη βάση, μεγαλώνει το μέγεθος της και κατ? επέκταση το load time των σελίδων. Άρα γίνεται πιο γρήγορο το blog. Επίσης, η καθαρότητα αυτή, μου δίνει στο μέλλον το δικαίωμα να ψάχνω αλλού τους ενόχους όταν κάτι δεν πάει καλά. Απο μεριάς μου είμαι πλέον Unicode ? πλήρως.

Όσο για τα παλιά post, αρκεί ενα edit στον FCKEditor και πάλι save ωστε να αποθηκευθούν σωστά στη βάση. Μπορώ να τα αφήσω και ως έχουν βέβαια, αφού προβάλλονται κανονικά και τα παλιά. Αλλά είπαμε? θέλουμε να είμαστε geeks και πίσω απο τις κάμερες.


blog.tech-spot.gr
 
Top Bottom