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

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

Δημοσ.

Γειά σας,

αυτές τις μέρες στήνω ένα site που θα έχει και βάσεις δεδομένων. Έχω δημιουργήσει τις βάσεις (σε sql) και έχω εισάγει τα δεδομένα, τα οποία στο phpmyadmin εμφανίζονται κανονικά (ο πίνακας έχει κωδικοποίηση utf8_general_ci). Προσπαθώντας να συνδέσω τη βάση με μία drop down list στο Dreamweaver, μου εμφανίζει τον πίνακα αλλά στις θέσεις ελληνικών χαρακτήρων εμφανίζει ?. Δεν έχω αλλάξει τίποτα στις ρυθμίσεις του Dreamweaver (είναι unicode utf8) και έχω βάλει στο header της σελίδας την αντίστοιχη κωδικοποίηση (<meta charset="utf-8" />). Μου κάνει εντύπωση γιατί στο phpmyadmin είναι όλα OK, ενώ στο  Dreamweaver μου βγάζει ότι να 'ναι. Όποιος ξέρει κάτι ας βοηθήσει. Ευχαριστώ.

Δημοσ.

Στο script που κάνεις σύνδεση στην βάση δεδομένων πρέπει να εξάγεις τα δεδομένα με UΤF-8.

Να είναι κάπως έτσι:

 

 

//Σύνδεση με τον server και επιλογή βάσης δεδομένων
$con = mysql_connect("Server Name","User Name","Password")
             or die( 'Could not connect to DB: ' . mysql_error() );
mysql_select_db("Database Name", $con) or die( mysql_error() );
//Εδώ δίνεις την κωδικοποίηση
mysql_query("SET NAMES 'utf8'", $con); 
Δημοσ.

Ποιο πιστεύετε ότι είναι το καταλληλότερο collation από τα operations που θα πρέπει να χρησιμοποιηθεί για τους Ελληνικούς χαρακτήρες;

 

Εχω και εγώ παρόμοιο πρόβλημα που πρώτη φορά συναντώ. Το

mysql_query("SET NAMES 'utf8'", $con); 

δεν δουλεύει.. και είναι ετσι:

mysql_select_db('testdatabase', $con); 

mysql_query("SET NAMES 'utf8'", $con);

φυσικά με όλα τα variables να είναι οκ. Να σημειώσω πως μετά το SET NAMES τα γράμματα έχουν αντικατασταθεί με αγγλικά ερωτηματικά, ενώ πρίν, χωρίς το SET NAMES ήταν κάθετοι και σταυροί.

Μήπως υπάρχει καμια ιδέα?

Δημοσ.

Τα κατάφερα. Αν το πρόβλημα επιμένει. Διαγραφή της προβληματικής Βάσης Δεδομένων. Δημιουργία μιας καινούργιας από την κονσόλα με εντολή:

CREATE DATABASE ΟΝΟΜΑ-ΤΗΣ-ΒΑΣΗΣ CHARACTER SET utf8 COLLATE utf8_bin;

και έπειτα η δημιουργία των tables. To

mysql_query("SET NAMES 'utf8'", $con); 

είναι ακόμα απαραίτητο.

Δημοσ.

δεν δουλεύει.. 

 

Μήπως υπάρχει καμια ιδέα?

 

Κάθε φορά που κάποιος ποστάρει "δε δουλεύουν τα ελληνικά" έρχεται κάποιος άλλος και λέει "βάλε SET NAMES". Και ο πόστερ βάζει SET NAMES, και το πρόβλημα λύνεται, και κανένας από τους δύο δεν έχει καταλάβει γιατί λύθηκε το πρόβλημα (πόσο μάλλον ποιό ακριβώς ήταν το πρόβλημα) και ζήσανε αυτοί καλά κι εμείς καλύτερα. Παρόλο που το SET NAMES λύνει μόνο ένα πολύ συγκεκριμένο πρόβλημα, και μάλιστα για το συγκεκριμένο πρόβλημα είναι η χειρότερη από τις λύσεις που υπάρχουν.

 

Στην πράξη όμως το θέμα των encodings έχει πολύ περισσότερα κινούμενα μέρη (input encoding όταν έρχεται η είσοδος, πιθανή αλλαγή encoding κατά την επεξεργασία, μετά connection encoding για να τα στείλεις στη βάση και τέλος storage encoding) τα οποία πρέπει να είναι στημένα σωστά. Εννοείται πως το μαγικό ραβδί SET NAMES αλλάζει μόνο ένα από αυτά τα πράγματα (αμφιβάλλω αν αυτός που το προτείνει τις περισσότερες φορές ξέρει τι ακριβώς κάνει) και πως όπως συνειδητοποίησες τώρα και συ υπάρχουν κι άλλα πράγματα που μπορεί να πάνε στραβά.

 

Για όποιον ενδιαφέρεται, εδώ μια ολοκληρωμένη περίληψη των παραμέτρων και του πώς να τις διαχειριστεί κανείς.

  • Like 3
Δημοσ.

Ποιο πιστεύετε ότι είναι το καταλληλότερο collation από τα operations που θα πρέπει να χρησιμοποιηθεί για τους Ελληνικούς χαρακτήρες;

 

utf8mb4_unicode_ci και σίγουρα όχι οτιδήποτε σε binary collation όπως το ut8_bin που χρησιμοποιείς παραπάνω.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...