Αρκετοί χρήστες πρέπει να έχουν παρατηρήσει την πολύ κακή υποστήριξη Unicode στο λογισμικό του forum SMF.
Συγκεκριμένα, δεν μπορεί να εμφανιστεί ο χαρακτήρας Π στο σώμα (body) μιας εγγραφής. Ο λόγος που συμβαίνει το πρόβλημα αυτό είναι εξαιρετικά απλός.
Υπάρχει κώδικας στο SMF που μετατρέπει την αλλαγή γραμμής (0x0a) σε html entity για αλλαγή γραμμής, στα σώματα (body) των εγγραφών. Η εντολή που κάνει την δουλειά αυτή δεν αναγνωρίζει Unicode – θεωρεί ότι οι χαρακτήρες είναι πάντα ενός byte. Έτσι, το ελληνικό Π στην κωδικοποίηση UTF-8 αποτελείται από τα byte
CE 0A
και το SMF καταστρέφει το δεύτερο byte!
Τι μπορεί να γίνει; Να μη γίνεται χρήση της substr (not Unicode-safe) αλλά της mb_substr (http://uk2.php.net/mb_substr).
Παρόμοιο πρόβλημα συμβαίνει και στην περικοπή των τίτλων εγγραφών στην εμφάνιση περιλήψεων. Για παράδειγμα,
Σήμερα στις 18:31:46
σε Απ: SMF και σωσ�…
από Χρήστης
Ο κώδικας του SMF χρησιμοποιεί την εντολή substr() για να κόψει τον τίτλο και την δημιουργία περικοπής. Ανάλογα με την περίσταση, η εντολή substr() κόβει μέσα σε χαρακτήρα utf-8 πολλαπλών byte.
Ποιά είναι η λύση; Χρήση legacy 8-bit κωδικοποίηση;
Η λύση είναι στην διόρθωση του SMF.
2 comments
Τους έχεις ενημερώσει γι’αυτό;
Author
Το γνωρίζουν ήδη και προχωρούν με το βαθμό που μπορούν.