antonisid Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 Καλησπερα,διαβασα τ αλλα τόπικς σχετικα με την γλωσαα αλλα δε βρηκα προβλημα παρομοιο με το δικο μου. Λοιπον εχω βαλει τα ελληνικα στο site και στο admin.Ολα καλα μεχρι εδω.Οταν παω ομως στο catalog Να προσθεσω μια κατηγορια πχ,απ'το εκτο γραμμα και μετα βγαζει μονο συμβολα (#&*-> κτλ) πχ (υπολο#&->@*) Εχει κανεις καμμια ιδεα? Μηπως η βαση δεν υποστηριζει ελληνικα? επισης κατι ακομα.Θα επρεπε να υπαρχει φακελλος με το ονομα Catalog? Οποιαδηποτε ιδεα ειναι ευπροσδεκτη...
alexandr0s Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 Η βάση είναι UTF-8? Δοκίμασε να αυξήσεις το μέγεθος του πεδίου categories_name στο πίνακα categories_description
antonisid Δημοσ. 22 Οκτωβρίου 2008 Μέλος Δημοσ. 22 Οκτωβρίου 2008 Η βάση είναι UTF-8?Δοκίμασε να αυξήσεις το μέγεθος του πεδίου categories_name στο πίνακα categories_description Κοιτα δε πρεπει να φτεει το μεγεθος του πεδιου διοτι σε αλλη γλωσσα δε βγαζει προβλημα οσα γραμματα και να βαλω. Τα παιδία τα εκανα UTF8_unicode_ci.Δε μπορω να το εξηγησω,έβαλα και στην βαση τα εξής : function tep_db_query($query, $link = 'db_link') { global $$link; if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) { error_log('QUERY ' . $query . "\n", 3, STORE_PAGE_PARSE_TIME_LOG); } mysql_query(' set character set utf8 '); mysql_query("SET NAMES 'utf8' "); $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error()); if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) { $result_error = mysql_error(); error_log('RESULT ' . $result . ' ' . $result_error . "\n", 3, STORE_PAGE_PARSE_TIME_LOG); } return $result; } Αυτες τις 2 γραμμες δηλαδη : mysql_query(' set character set utf8 '); mysql_query("SET NAMES 'utf8' "); Καμμια ιδεα?
beef.techie Δημοσ. 29 Οκτωβρίου 2008 Δημοσ. 29 Οκτωβρίου 2008 Ναι. Είναι το μέγεθος του πεδίου... Μετά από 2 ώρες ψάξιμο, τελικά έτσι λύθηκε σε εμένα... Πρόσεξε: κάθε ελληνικός χαρακτήρας σε UTF8_unicode_ci χρειάζεται 6 χαρακτήρες: Π.χ. η λέξη Ελληνικά είναι: 917; 955; 955; 951; 957; 953; 954; 940; -χωρίς τα κενά (τα έβαλα για να φαίνεται η κωδικοποίηση)- Έτσι, στη βάση (που έχει μέγεθος στα περισσότερα varchar πεδία = 32) αποθηκεύονται τα πρώτα 5 γράμματα (5χ6=30 χαρακτήρες), και το από το 6ο γράμμα, και τελικά σου εμφανίζει: Ελλην... Εμένα τουλάχιστον, αυτό έκανε... Αν το πρόβλημά σου είναι το ίδιο, η λύση είναι να αλλάξεις όλα τα πεδία στα οποία πρόκειται να δώσεις ελληνικές τιμες, σε μέγεθος 6χ το αρχικό τους Ελπίζω να βοήθησα!!!
fromaz Δημοσ. 29 Οκτωβρίου 2008 Δημοσ. 29 Οκτωβρίου 2008 Η λύση αγαπητέ beef.techie είναι να βρεθεί το bug στο osCommerce ή τις κωδικοποιήσεις που έχουν δηλωθεί από εσάς (δεν γνωρίζω τι από τα δύο ισχύει), γιατί είναι κρίμα τόσο η βάση όσο και η σελίδα να γεμίζουν με άχρηστα bytes. Η κωδικοί που παρέθεσες λέγονται html unicode entities και είναι ο αρχαίος τρόπος (browsers της γενιάς 4 και πριν) απεικόνισης non-ascii χαρακτήρων. Δεν έχουν καμία σχέση με το utf-8 (όπου οι ελληνικοί χαρακτήρες δεν αντιστοιχούν σε 6 bytes αλλά σε 2). Κανένας σύγχρονος browser δεν έχει πρόβλημα σωστής απεικόνισης UTF-8, συνεπώς η ανάγκη για τα entities έχει εκλείψει (εκτός και αν αφορούν ειδικούς τυπογραφικούς χαρακτήρες, σύμβολα, κλπ). Όταν όλα δηλωθούν όπως πρέπει, και με την προϋπόθεση πως η εφαρμογή είναι σωστή, τότε δεν υπάρχει κανένας λόγος να απασχολείται κανείς με το μέγεθος του πεδίου της βάσης x2 ή x6 (!). Το documentation της mySql αναφέρει ξεκάθαρα πως όταν ο τύπος του column (πεδίου) είναι varchar (και όχι char), τότε η βάση αναλαμβάνει να το αυξομειώνει αυτόματα ανάλογα με το περιεχόμενο. Δηλαδή, 30 δηλωμένοι χαρακτήρες, είναι 30 χαρακτήρες είτε αυτοί είναι latin είτε κινέζικοι. Τέλος, επειδή παρατηρώ πως πολύ συχνά ανοίγονται θέματα με προβλήματα που αφορούν στο utf-8, θα ήθελα να υπενθυμίσω πως υπάρχει και η παλιά και δοκιμασμένη λύση κωδικοποίησης σε ISO-8859-7, όπου τα πάντα είναι όπως φαίνονται και καταλαμβάνουν 1 byte ανά χαρακτήρα. Εκτός, πια, και αν υπάρχει ανάγκη υποστήριξης γλωσσών πέραν των Αγγλικών και Ελληνικών ή το CMS δεν παρέχει αυτήν την επιλογή.
antonisid Δημοσ. 29 Οκτωβρίου 2008 Μέλος Δημοσ. 29 Οκτωβρίου 2008 Εβαλα το μεγεθος του πεδίου 255 bytes και ολα οκ...Γνωριζει κανεις αν εχω βαλει ιδανικο μέγεθος για να μην έχω προβληματα στο μέλλον σε άλλα πεδία της βάσης???
beef.techie Δημοσ. 29 Οκτωβρίου 2008 Δημοσ. 29 Οκτωβρίου 2008 Fromaz: Προφανώς είναι bug, ή λάθος, ή απαρχαιωμένος ο τρόπος εγγραφής ελληνικών του osCommerce, αλλά έτσι τα αποθηκεύει στη βάση, ή τέλος πάντων έτσι έκανε στη δικιά μου περίπτωση... Για έναν απλό χρήστη (όπως εγώ), από το να βρει πώς να αλλάξει το πρόγραμμα για να λύσει το πρόβλημα, είναι πιο εύκολο και απλό το να βρει έναν τρόπο να το παρακάμψει.. Πιο εύκολο και απλό είπα, όχι πιο σωστό... antonisid: Γενικά σε εμένα ισχύει αυτό που είπα παραπάνω, ότι δηλαδή κάθε ελληνικός χαρακτήρας καταλαμβάνει 6 θέσεις αντί για 1, οπότε το x6 είναι το "σωστό" μέγεθος έτσι ώστε να μπορείς να εισάγεις τον προβλεπόμενο αριθμό χαρακτήρων.. Από εκεί και πέρα, αν έχεις το μεράκι, τις γνώσεις ή την τύχη και βρεις καλύτερη (και πιο ορθολογική) λύση, μοιράσου τη μαζί μας
beef.techie Δημοσ. 31 Οκτωβρίου 2008 Δημοσ. 31 Οκτωβρίου 2008 Για να μη γκρινιάζετε..... http://www.insomnia.gr/forum/showthread.php?t=282196 Βρήκα λύση για το πρόβλημα αυτό, και ψάχνω και για διάφορα άλλα παρόμοια... Όποιος μπορεί να βοηθήσει, ή θέλει να ζητήσει κάτι σχετικό, ας το κάνει εκεί, να τα έχουμε όλα μαζεμένα...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.