Ελληνικά στην $_GET['']

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 18:16

Τίποτα. Μήπως να δοκιμάσω να ξαναφτιάξω τη βάση με άλλο collation?

Τι να πω?

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Ελληνικά στην $_GET['']

Δημοσίευση από Khronos » 28 Φεβ 2011 18:17

Sorry, λάθος post.[/img]

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 01 Μαρ 2011 10:16

Ευχαριστώ για τις απαντήσεις αλλά δυστυχώς τίποτα ακόμα. Θα συνοψίσω το πρόβλημα μήπως κάποιος σκεφτεί κάτι.

Έχω ένα internet service σε php το οποίο μιλά με μία βάση σε MySQL (WAMP) και καλεί δεδομένα με φίλτρο το επίθετο ενός ατόμου. Όλα τα δεδομένα είναι στα ελληνικά και υπάρχουν και μεμονομένα στα αγγλικά για τεστ.

Το collation της βάσης είναι σε utf8_general_ci.

Το php script είναι το παρακάτω:

Κώδικας: Επιλογή όλων

$link = mysql_connect($dbhost, $dbuser,$dbpass);

mysql_select_db("per_test", $link);
mysql_query("SET NAMES 'utf8'", $link);

$test = mysql_real_escape_string($_GET['surname']);

$query = "SELECT * FROM person where Person_Surname like '$test%'";
$q=mysql_query($query, $link);

while($e=mysql_fetch_assoc($q))
   $output[]=$e;
print(json_encode($output));
@mysql_close($link);
Όταν το δοκιμάζω στον explorer όταν βάλω στο surname=παπ, το παπ παραμένει παπ ενώ στο mozilla γίνεται %F0%E1%F0. (Η κωδικοποίηση των browser είναι utf-8 ).

Το echo του SELECT είναι αυτό:

Κώδικας: Επιλογή όλων

SELECT * FROM Person where Person_Surname like '���%'
Το σφάλμα που μου πετάει στο ελληνικό φίλτρο αναφέρεται στις γραμμές:

Κώδικας: Επιλογή όλων

while($e=mysql_fetch_assoc($q))
   $output[]=$e;
print(json_encode($output));
και είναι το εξής:

Notice: Undefined variable: output in C:\wamp\www\test\getPersonsbySurname.php on line 75

όπου line 75 το print(json_encode($output)).

Όταν πάλι δοκιμάσω στον browser με κενό surname μου επιστρέφει data στη μορφή:

Κώδικας: Επιλογή όλων

SELECT * FROM Person where Person_Surname like '%'
[{"person_id":"1","person_name":"\u03a7\u03a1\u0397\u03a3\u03a4\u039f\u03a3","person_surname":"\u03a0\u0391\u03a0\u0391\u0394\u039f\u03a0\u039f\u03a5\u039b\u039f\u03a3"},{"person_id":"2","person_name":"\u0393\u0399\u039f\u03a5\u039b\u0397","person_surname":"\u03a4\u0396\u0395\u03a1\u039c\u03a0\u0399\u039d\u039f\u03a5"}] 
τα οποία έχω χρησιμοποιήσει σε εφαρμογή και μου έχουν εμφανιστεί σωστά.

Το ίδιο ισχύει και για τα αγγλικά δοκιμαστικά δεδομένα.

Τέλος να πω ότι το script έχει δημιουργηθεί σε Notepad++ με κωδικοποίηση utf-8 without BOM.

Ελπίζω τώρα που είναι πιο μαζεμένα να είναι πιο σαφές το τι μπορεί να φταίει.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από burnmind » 01 Μαρ 2011 12:58

Το παρακάτω το έχεις κάνει; Γιατί δεν είδα να το αναφέρεις:
korgr έγραψε:Επίσης να έχεις ορίσει utf-8 και στο encoding της html
Προσοχή, δε μιλάει για το encoding του browser που συχνά-πυκνά αναφέρεις αλλά για το εξής:

Κώδικας: Επιλογή όλων

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

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 01 Μαρ 2011 13:41

Ναι ρε γαμώτο και αυτό το έχω κάνει.

Thanx πάντως.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από cpulse » 01 Μαρ 2011 14:15

Βάλτα όλα σε comments, και τέσταρε ένα ένα τα μέρη. Πχ κάνε ενα τέστ μόνο με το $_GET, ένα άλλο με ένα sql χωρίς καμία μεταβλητή.. δηλαδή σπάσε σε πάρα πολύ μικρά κομμάτια το πρόβλημα. Συναρμολόγησε τα σιγά σιγά μέχρι να βρεθεί το πρόβλημα.

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 01 Μαρ 2011 14:44

Το πρόβλημα νομίζω ότι ξέρω που είναι! Δεν παίρνει σωστά το GET όταν του βάζω ελληνικούς χαρακτήρες στον browser (surname=παπ).

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

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Ελληνικά στην $_GET['']

Δημοσίευση από fafos » 01 Μαρ 2011 16:11

dhladh, pairneis to get meso tou link sthn dieuthynsh tou browser kai oxi meso kapoias formas?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από korgr » 01 Μαρ 2011 16:14

hamilton000 έγραψε:Το πρόβλημα νομίζω ότι ξέρω που είναι! Δεν παίρνει σωστά το GET όταν του βάζω ελληνικούς χαρακτήρες στον browser (surname=παπ).

Εκτός του ότι το echo του query βγάζει είτε τετραγωνάκια είτε "κινέζικα", για λατινικούς χαρακτήρες δουλεύει μια χαρά, καθώς και το SELECT με ελληνικά στη mySQL δουλεύει μια χαρά και επιστρέφει τα δεδομένα που πρέπει.
Δοκίμασες με url encode/decode?

Εμένα και σε firefox και σε IE το ακόλουθο δουλεύει μια χαρά

Κώδικας: Επιλογή όλων

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<?php
if&#40;$_GET&#91;'name'&#93;&#41;&#123;
 echo urldecode&#40;$_GET&#91;'name'&#93;&#41;;	
&#125;
?>
<br>
<a href="?name=<?php echo urlencode&#40;'Νότης'&#41;; ?>">Test</a>
</body>
</html>

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 01 Μαρ 2011 16:30

Ε λοιπόν θα τρελαθώ γιατί εμένα δε μου δουλεύει ούτε στο ένα ούτε στο άλλο. Πάλι τετραγωνάκια και κινέζικα!!!

Μήπως είναι καμιά ρύθμιση στο wamp (APACHE 2.2.11, mySQL 5.1.36, PHP 5.3.0)??

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από korgr » 01 Μαρ 2011 17:29

Εννοείς πως δεν σου δουλεύει και το απλό παράδειγμα κώδικα που έγραψα???

Μήπως όταν ανοίγεις ένα από τα προβληματικά σου scripts στο notepad++ στο menu Encoding είναι επιλεγμένο το "Encode in ANSI"?

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 02 Μαρ 2011 10:02

Για να γίνω πιο σαφής.

Όταν περάσω στον browser μία μεταβλητή στα ελληνικά μου επιστρέφει τετραγωνάκια-κινέζικα. Μόλις όμως κάνω κλικ στο τεστ μου εμφανίζει το "Νότης" κανονικά και στη σελίδα και στην διεύθυνση του browser. Μόλις πατήσω όμως ENTER στη σελίδα που έχει το νότης σαν παράμετρο, μου τα βγάζει πάλι λάθος.

Το Notepad++ ειναι σε κωδικοποίηση utf-8 without BOM.

Εσένα αν βάλεις παράμετρο κάποιο όνομα στα ελληνικά στο εμφανίζει κανονικά στη σελίδα?

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από korgr » 02 Μαρ 2011 15:14

Μα πρέπει να γράψεις μόνος σου ελληνικά στο address bar?
Έτσι και σε μένα τετράγωνα βγάζει.

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 02 Μαρ 2011 15:45

Ίσως τελικά να μη γίνεται, αλλά και να μη μου χρειάζεται.

Σας ευχαριστώ πάντως!!

papoukas
Δημοσιεύσεις: 76
Εγγραφή: 18 Ιαν 2011 23:24

Ελληνικά στην $_GET['']

Δημοσίευση από papoukas » 04 Μαρ 2011 21:06

Νομίζω ότι καλό είναι να τσεκάρεις αν το αρχείο της php είναι utf-8. Ανοιξετο με το σημειωματάριο και κάνε save as με κωδικοποίηση utf-8 . Μάλλον το πρόβλημα θα λυθεί.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες