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

Πρόβλημα με ελληνικά σε αναζήτηση


macabre_sunsets

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

Δημοσ.

Θέλω να κάνω αναζήτηση με ελληνικούς χαρακτήρες σε MySQL, αλλά δυστυχώς δεν μπορώ να τους διαβάσω σωστά. Το πρόβλημα δεν νομίζω να είναι τόσο στην βάση, όσο στο ότι δεν παίρνει σωστά το string.

 

Τι έχω κάνει μέχρι τώρα...

 

Έχω το ακόλουθο για να κάνω την αναζήτηση. Δεν είναι μέσα σε <form>... Μόνο οι δύο αυτές γραμμές

><input type="text" id="data" value="" />
<input type="button" value="Search" onclick="requestdata()" />

 

Το οποίο καλεί το παρακάτω JavaScript

>function requestdata() {     
           var data= document.getElementById("data").value;
           http.open("GET", escape(data), true);
           http.onreadystatechange = handleHttpResponse;
           http.send(null);
       }

 

Το οποίο με την σειρά του καλεί μια PHP σελίδα που έχει το εξής

>$mydata= $_GET['data'];

 

Όπου data είναι η μεταβλητή που χρησιμοποιώ (mypage.php?data=...). Όταν κάνω

>echo $mydata

 

Μου επιστρέφει '%u03C4%u03B5%u03C3%u03C4", αντί για "τεστ" (που έβαλα στην συγκεκριμένη περίπτωση).

 

Έχω βάλει

><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

στο index μου αλλά δεν κάνει τπτ.

 

Επίσης έχω δοκιμάσει να κάνω utf8_encode/utf8_decode την μεταβλητή $mydata, αλλά το αποτέλεσμα δεν άλλαζε. Με λατινικούς χαρακτήρες η αναζήτηση δουλεύει μια χαρά.

 

Έχει κανείς καμια ιδέα για το τι μπορεί να φταίει, ή πώς μπορώ να πάρω τους ελληνικούς χαρακτήρες, χωρίς να χρειάζονται ειδικές function αντιχτοιχίας (πχ το %u03C4 να το κανει τ, το %u03B5 να το κάνει ε και πάει λέγοντας).

Δημοσ.

για δοκίμασε να κάνεις και save τις σελίδες (html, php) σαν UTF-8

(μπορείς να το κάνεις με notepad ή notepad++)

σε κάποια ανάλογη κατάσταση σε εμένα έτσι διορθώθηκε

Δημοσ.

Η escape() είναι που σου προκαλεί αυτό το πρόβλημα. Δοκίμασε να τη βγάλεις και δες πως αντιδράει. Το ξέρω ότι είναι αναγκαίο, αλλά την ίδια ενέργεια/έλεγχο μπορείς να την κάνεις και στο mydata.php.

 

Επίσης δοκίμασε να κάνεις url_decode($data); μέσα στο mydata.php πριν τα κάνεις echo.

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

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

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