Προς το περιεχόμενο

προβλήματα κωδικοποίησης


ilonael

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα σε όλους!

 

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

 

Λοιπόν, έχω 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 παντού (βάση, πίνακες) και παρ όλα αυτά έχω πρόβλημα με την κωδικοποίηση... Οι σελίδες μου εμφανίζονται κανονικά... Το θέμα είναι τα δεδομένα που καταχωρούνται στη βάση μου... Ενώ καταχωρώ ελληνικά, στη βάση φαίνονται σωστά, όταν τα προβάλω στην ιστοσελίδα εμφανίζονται ???????? .... τι να κάνω;; έχω δοκιμάσει τα πάντα νομίζω!!!!

 

Σώστε με γιατί πιέζομαι χρονικά!! Ευχαριστώ εκ των προτέρων..

Δημοσ.

ναι ναι...τα tpl (είναι αντίστοιχα των html) έχουν αυτή τη γραμμή στην αρχή... γι αυτό νομίζω δεν έχω πρόβλημα με την κωδικοποίηση των σελίδων μου καθαυτών, αλλά μόνο με τα στοιχεία που περνάνε στη βάση...

 

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

 

επίσυνάπτω ένα printscreen να καταλάβετε που είναι το θέμα...

post-219097-0-73940300-1304404062_thumb.png

Δημοσ.

Αν κάνεις ένα select query για αυτά τα δεδομένα στην βάση και το σώσεις σε ένα .txt ή .dat αρχείο πώς τα εμφανίζει?

Δημοσ.

Μήπως κάτι σαν το ακόλουθο βοηθήσει (στο αρχείο που είναι υπεύθυνο για την σύνδεση στην βάση);

><?php 
$link2 = mysql_connect('localhost','user1','pass1',TRUE); 
mysql_selectdb('db2',$link2); 
mysql_set_charset('utf8',$link2); <- Αυτή η γραμμή κυρίως
?>

Εάν αλλάξεις κωδικοποίηση από τον φυλομετρητή (και δοκιμάσεις διάφορες), μπορείς να δεις τα δεδομένα;

Δημοσ.

Ναι... αλλάζοντας κωδικοποίηση στο φυλλομετρητή έχω πετύχει ασύγχρονο αποτέλεσμα... δηλαδή ή θα βλέπω σωστά τη σελίδα μου και ακαταλαβίστικα τα στοιχεία της βάσης ή το αντίστροφο... να τα δω ταυτόχρονα σωστά... τζίφος!! και έχω δοκιμάσει σε explorer, mozilla και chrome... Θα δοκιμάσω το scriptaki που μου έβαλες..

 

Αν κάνεις ένα select query για αυτά τα δεδομένα στην βάση και το σώσεις σε ένα .txt ή .dat αρχείο πώς τα εμφανίζει?

έχω κάνει export τη βάση μου από το phpmyadmin σε sql, το άνοιξα με notepad ++ και μου τα δείχνει σωστά.... σε txt δεν έχω δοκιμάσει...

 

επίσης... το collation είναι utf8_unicode_ci έτσι;; γιατί υπάρχουν πολλές εναλλακτικές... νομίζω ότι αυτό είναι το γενικό, γιατί όλα τα άλλα καθορίζουν συγκεκριμένη γλώσσα...

Δημοσ.

Με ποια κωδικοποίηση κατάφερες να δεις σωστά τα δεδομένα από την βάση; Μήπως αν την έβαζες στο mysql_set_charset(...) κατάφερνες να λύσεις το πρόβλημα;

Δημοσ.

με την ISO-8859-7... αλλά δεν έχει αντιστοιχία στα collation του PHPmyAdmin..

 

επίσης, έχει σημασία αν γράφω utf-8 ή utf8 στο charset? γιατί το βλέπω και με τους δύο τρόπους....

Δημοσ.

Νομίζω πως 'utf8' είναι το «σωστό», χωρίς να είμαι απόλυτα σίγουρος.

 

Μια ακόμη δοκιμή που μπορείς να κάνεις είναι να βάλεις 'greek' αντί για 'utf8' στο mysql_set_charset(...). Ή 'latin1'.

Είναι ελαφρώς «τυχαίες» μαντεψιές βέβαια αυτά, αλλά ποτέ δεν ξέρεις.

Δημοσ.

να αλλάξω ταυτόχρονα και το collation της βάσης και των πινάκων από το phpmyadmin? ή αρκεί η εντολή στον κώδικα;

 

ευχαριστώ πολύ για τη βοήθεια και πάλι! τσεκάρω ταυτόχρονα αυτά που συζητάμε κι αν έχω αποτέλεσμα θα το βάλω εδώ μπας και σωθούν κι άλλοι!!

Δημοσ.

Χρησιμοποιείς notepad ++;

Αν ναι δες τι κωδικοποίηση έχουν τα αρχεία σου. Προφανώς από default η επιλογή είναι ansi, οπότε αυτό που πρέπει να κάνεις είναι, convert όλα τα αρχεία σου σε utf-8. (Προσοχή πριν κάνεις οτιδήποτε καλού κακού κάνε ένα back up ότι έχεις κάνει).

Είχα το ίδιο πρόβλημα και κάπως έτσι το έλυσα. Μετά εννοείται πως το μόνο που έχει να κάνεις είναι, να ορίσεις <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> στο header και στην βάση δεν αλλάζεις τίποτα, αν είσαι ήδη σε utf-8.

Δημοσ.

Λοιπόν... η λύση δόθηκε ως εξής:

 

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 για μένα) σελίδες!

 

Ευχαριστώ πολύ παιδιά... η βοήθειά σας ήταν πολύτιμη!

Δημοσ.

μα στην αρχή με utf8 το προσπαθούσα και δεν έβγαινε... γιατί το λες όμως; είναι πιο "αποδεκτή" κωδικοποίηση;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...