Παίζοντας με Unicode

Αν σας πει κάποιος να ψάξετε την σελίδα αυτή για την λέξη ТОМАТА, θα το γράψετε στα ελληνικά και θα ψάξετε, μιας και ότι διαβάζετε εδώ είναι στα ελληνικά. Αν δείτε ότι δεν μπορεί να το βρει η αναζήτησή του Firefox σας, θα σκεφτείται, θα το έγραψε στα αγγλικά. Ας κάνω αναζήτηση στα αγγλικά. Αν πάλι δεν το βρει η αναζήτηση, τότε κάτι συμβαίνει…

Μμμμ, μπορεί να το έγραψε μισά ελληνικά, μισά αγγλικά, που σημαίνει ότι γίνεται αρκετά δύσκολο να βρεθεί μια απάντηση.

Υπάρχει άλλο επίπεδο δυσκολίας;

Ναι, υπάρχουν και τα κυριλλικά, που δημιουργούν ένα σαφέστατο κλίμα σύγχισης :).
Η παραπάνω λέξη για την τομάτα είναι με κυριλλικούς χαρακτήρες μόνο.

Γιατί συμβαίνει το πρόβλημα αυτό; Διότι στο πρότυπο Unicode, υπάρχουν χαρακτήρες που επαναλαμβάνονται, όπως το λατινικό A, το κυριλλικό А και το ελληνικό Α. Υπάρχουν περιπτώσεις που το πρότυπο Unicode αναφέρει ότι συγκεκριμένοι επαναλαμβανόμενοι χαρακτήρες είναι ισοδύναμοι με ένα κοινό χαρακτήρα. Στην περίπτωση της τομάτας (παραπάνω), οι χαρακτήρες αυτοί είναι διαφορετικοί, και ονομάζονται homographs (ή homoglyphs), και αποτελούν πηγή ζητημάτων ασφάλειας και πιθανών προβλημάτων σε πληροφοριακά συστήματα.

Αυτό σημαίνει ότι η κωδικοποίηση UTF-8 είναι προβληματική; Όχι. Το ζήτημα είναι ανεξάρτητο από την κωδικοποίηση διότι μπορεί κάποιος να παράγει τους χαρακτήρες αυτούς (homoglyphs) σε HTML με χρήση π.χ. του Τ για Τ κτλ.
Είναι σημαντικό να καθορίζει κάποιος την κωδικοποίηση UTF-8 στο σύστημά του (WordPress, CMS, κτλ) διότι διαφορετικά το σύστημα είτε θα χαλάει τα δεδομένα (λάθος κωδικοποίηση σε χαρακτήρες που δεν ανήκουν στην υποστηριζόμενη ομάδα), είτε θα τους μετατρέπει σε HTML entities όπως Α. Ο χαρακτήρας Α (ελληνικό, κεφαλαίο Α) σε κωδικοποίηση UTF-8 απαιτεί 3 byte ενώ ως HTML entity θέλει 5.

Αν αρχίσατε με windows-1253 ή iso-8859-7, ήρθε η ώρα να ανανεωθείτε!

Permanent link to this article: https://blog.simos.info/%cf%80%ce%b1%ce%af%ce%b6%ce%bf%ce%bd%cf%84%ce%b1%cf%82-%ce%bc%ce%b5-unicode/

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.