ilonael Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Καλημέρα σε όλους! Είμαι "νέα" στον κόσμο του προγραμματισμού και προσπαθώ να φτιάξω ένα απλό συστηματάκι.. έχω όμως πρόβλημα με την κωδικοποίηση... απ ότι είδα, συχνά παρουσιάζονται τέτοια προβλήματα... Λοιπόν, έχω Phpmyadmin 3.3.9, PHP 5.3.5, MySQL 5.5.8, Apache/2.2.17 (Win32) και Xampp 1.7.4. Δουλεύω σε 64bit Windows 7... οι σελίδες μου είναι φτιαγμένες σε .tpl με κωδικοποίηση utf-8, το collation της βάσης μου είναι utf-8 παντού (βάση, πίνακες) και παρ όλα αυτά έχω πρόβλημα με την κωδικοποίηση... Οι σελίδες μου εμφανίζονται κανονικά... Το θέμα είναι τα δεδομένα που καταχωρούνται στη βάση μου... Ενώ καταχωρώ ελληνικά, στη βάση φαίνονται σωστά, όταν τα προβάλω στην ιστοσελίδα εμφανίζονται ???????? .... τι να κάνω;; έχω δοκιμάσει τα πάντα νομίζω!!!! Σώστε με γιατί πιέζομαι χρονικά!! Ευχαριστώ εκ των προτέρων..
macabre_sunsets Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Έχεις δοκιμάσει να βάλεις ><meta http-equiv="content-type" content="text/html; charset=UTF-8" /> στο <head>...</head> της σελίδας σου;
ilonael Δημοσ. 3 Μαΐου 2011 Μέλος Δημοσ. 3 Μαΐου 2011 ναι ναι...τα tpl (είναι αντίστοιχα των html) έχουν αυτή τη γραμμή στην αρχή... γι αυτό νομίζω δεν έχω πρόβλημα με την κωδικοποίηση των σελίδων μου καθαυτών, αλλά μόνο με τα στοιχεία που περνάνε στη βάση... για παράδειγμα, μπορώ να δω το μενού μου, τα μηνύματα καλωσορίσματος κλπ, αλλά δεν μπορώ να δω τα στοιχεία των εγγεγραμμένων χρηστών, πέρα από αυτά που είναι στα αγγλικά... βλέπω μέιλ, username κλπ, αλλά όχι όνομα και επώνυμο... επίσυνάπτω ένα printscreen να καταλάβετε που είναι το θέμα...
Tmark Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Αν κάνεις ένα select query για αυτά τα δεδομένα στην βάση και το σώσεις σε ένα .txt ή .dat αρχείο πώς τα εμφανίζει?
macabre_sunsets Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Μήπως κάτι σαν το ακόλουθο βοηθήσει (στο αρχείο που είναι υπεύθυνο για την σύνδεση στην βάση); ><?php $link2 = mysql_connect('localhost','user1','pass1',TRUE); mysql_selectdb('db2',$link2); mysql_set_charset('utf8',$link2); <- Αυτή η γραμμή κυρίως ?> Εάν αλλάξεις κωδικοποίηση από τον φυλομετρητή (και δοκιμάσεις διάφορες), μπορείς να δεις τα δεδομένα;
ilonael Δημοσ. 3 Μαΐου 2011 Μέλος Δημοσ. 3 Μαΐου 2011 Ναι... αλλάζοντας κωδικοποίηση στο φυλλομετρητή έχω πετύχει ασύγχρονο αποτέλεσμα... δηλαδή ή θα βλέπω σωστά τη σελίδα μου και ακαταλαβίστικα τα στοιχεία της βάσης ή το αντίστροφο... να τα δω ταυτόχρονα σωστά... τζίφος!! και έχω δοκιμάσει σε explorer, mozilla και chrome... Θα δοκιμάσω το scriptaki που μου έβαλες.. Αν κάνεις ένα select query για αυτά τα δεδομένα στην βάση και το σώσεις σε ένα .txt ή .dat αρχείο πώς τα εμφανίζει? έχω κάνει export τη βάση μου από το phpmyadmin σε sql, το άνοιξα με notepad ++ και μου τα δείχνει σωστά.... σε txt δεν έχω δοκιμάσει... επίσης... το collation είναι utf8_unicode_ci έτσι;; γιατί υπάρχουν πολλές εναλλακτικές... νομίζω ότι αυτό είναι το γενικό, γιατί όλα τα άλλα καθορίζουν συγκεκριμένη γλώσσα...
macabre_sunsets Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Με ποια κωδικοποίηση κατάφερες να δεις σωστά τα δεδομένα από την βάση; Μήπως αν την έβαζες στο mysql_set_charset(...) κατάφερνες να λύσεις το πρόβλημα;
ilonael Δημοσ. 3 Μαΐου 2011 Μέλος Δημοσ. 3 Μαΐου 2011 με την ISO-8859-7... αλλά δεν έχει αντιστοιχία στα collation του PHPmyAdmin.. επίσης, έχει σημασία αν γράφω utf-8 ή utf8 στο charset? γιατί το βλέπω και με τους δύο τρόπους....
macabre_sunsets Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Νομίζω πως 'utf8' είναι το «σωστό», χωρίς να είμαι απόλυτα σίγουρος. Μια ακόμη δοκιμή που μπορείς να κάνεις είναι να βάλεις 'greek' αντί για 'utf8' στο mysql_set_charset(...). Ή 'latin1'. Είναι ελαφρώς «τυχαίες» μαντεψιές βέβαια αυτά, αλλά ποτέ δεν ξέρεις.
ilonael Δημοσ. 3 Μαΐου 2011 Μέλος Δημοσ. 3 Μαΐου 2011 να αλλάξω ταυτόχρονα και το collation της βάσης και των πινάκων από το phpmyadmin? ή αρκεί η εντολή στον κώδικα; ευχαριστώ πολύ για τη βοήθεια και πάλι! τσεκάρω ταυτόχρονα αυτά που συζητάμε κι αν έχω αποτέλεσμα θα το βάλω εδώ μπας και σωθούν κι άλλοι!!
macabre_sunsets Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Μην αλλάξεις την βάση. Μόνο στον κώδικα. Βέβαια πάρε ένα backup της βάσης καλού κακού να υπάρχει.
@sterios Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Χρησιμοποιείς notepad ++; Αν ναι δες τι κωδικοποίηση έχουν τα αρχεία σου. Προφανώς από default η επιλογή είναι ansi, οπότε αυτό που πρέπει να κάνεις είναι, convert όλα τα αρχεία σου σε utf-8. (Προσοχή πριν κάνεις οτιδήποτε καλού κακού κάνε ένα back up ότι έχεις κάνει). Είχα το ίδιο πρόβλημα και κάπως έτσι το έλυσα. Μετά εννοείται πως το μόνο που έχει να κάνεις είναι, να ορίσεις <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> στο header και στην βάση δεν αλλάζεις τίποτα, αν είσαι ήδη σε utf-8.
ilonael Δημοσ. 5 Μαΐου 2011 Μέλος Δημοσ. 5 Μαΐου 2011 Λοιπόν... η λύση δόθηκε ως εξής: collation στη βάση, τους πίνακες και τα πεδία -> greek_general_ci o παρακάτω κώδικας για τη σύνδεση και την επιλογή βάσης και η ένδειξη greek για την κωδικοποίηση: $con=mysql_connect($dbServer,$dbUser,$dbPass) or trigger_error(mysql_error().$con); mysql_select_db("elearning",$con) or die("Δεν έγινε σύνδεση: " .mysql_error()); mysql_set_charset('greek',$con); η εντολή content="text/html" charset="iso-8859-7" σε όλες τις html (.tpl για μένα) σελίδες! Ευχαριστώ πολύ παιδιά... η βοήθειά σας ήταν πολύτιμη!
ilonael Δημοσ. 6 Μαΐου 2011 Μέλος Δημοσ. 6 Μαΐου 2011 μα στην αρχή με utf8 το προσπαθούσα και δεν έβγαινε... γιατί το λες όμως; είναι πιο "αποδεκτή" κωδικοποίηση;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.