Πρόβλημα κωδικοποίησης UTF8

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Πρόβλημα κωδικοποίησης UTF8

Δημοσίευση από philos » 08 Ιουν 2011 21:19

Λοιπόν, είχα φτιάξει παλιά μια βάση δεδομένων ενός μικρού λεξικού με ελληνικά λήμματα.
Η βάση δεδομένων τότε ήταν latin1_swedish_ci και το charset της σελίδας ISO-8859-7

Ξανά χρειάστηκα τον πίνακα της βάσης με τις λέξεις και τον εισήγαγα σε άλλη βάση δεδομένων utf8_unicode_ci. Η σελίδα με τις λέξεις και η αναζήτηση λειτουργεί κανονικά (ISO-8859-7).

Αποφάσισα να προσθέσω autocomplete στο πεδίο της αναζήτησης του λεξικού και συγκεκριμένα ΑΥΤΟ: http://www.nodstrum.com/2007/09/19/autocompleter/ μιας που είμαι αρχάριος στον προγραμματισμό και η εν λόγω σελίδα έχει αναλυτικές οδηγίες.
Το βρήκα από εδώ: http://www.freestuff.gr/forums/viewtopic.php?t=55624

Το πρόβλημα όμως είναι ότι δεν λειτουργεί σωστά το autocomplete και όπως μπορείτε να δείτε είναι πρόβλημα κωδικοποίησης:
Εικόνα

Στο PHP αρχείο έχω προσθέσει και το:
$query = $db->query("SET NAMES 'utf8'");
$query = $db->query("SET CHARACTER SET 'utf8'");
και αν αλλάξω το utf8 σε latin1 έχω το ακόλουθο αποτέλεσμα:
Εικόνα

Αν προβάλω το περιεχόμενο του πεδίου με τις λέξεις στο phpmyadmin βλέπω αυτό.
Παρόλα αυτά το λεξικό λειτουργεί κανονικά τόσο στην αναζήτηση των λέξεων (αν πληκτρολογήσεις με το χέρι τη λέξη στο πεδίο αναζήτησης) όσο και στην προβολή των ερμηνειών.

Τι μπορώ να κάνω με το autocomplete;
Τα δεδομένα βρίσκονται στον table "_vbglossary" στο field "glossaryname"
Μήπως πρέπει να μετατρέψω τον πίνακα σε utf8 εφόσον δεν είναι; Πως γίνεται αυτό πέρα από την αλλαγή collation; :roll:
Εκτός κι αν είναι θέμα με το ajax...

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

Πρόβλημα κωδικοποίησης UTF8

Δημοσίευση από fafos » 08 Ιουν 2011 21:45

paixe me thn iconv... $q= iconv('greek','utf-8',$q); h iconv('utf-8','greek',$q);
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Πρόβλημα κωδικοποίησης UTF8

Δημοσίευση από philos » 08 Ιουν 2011 23:49

Μετά από δοκιμές, άλλαξα το:

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

$query = $db->query("SET NAMES 'utf8'");
$query = $db->query("SET CHARACTER SET 'utf8'"); 
σε:

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

  $query = $db->query("SET NAMES 'latin1'");
  $query = $db->query("SET CHARACTER SET 'latin1'");
και άλλαξα τη γραμμή:

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

echo '<li onClick="fill&#40;\''.$result->glossaryname.'\'&#41;;">'.$result->glossaryname.'</li>';
σε:

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

echo '<li onClick="fill&#40;\''.iconv&#40;"ISO-8859-7", "UTF-8", "$result->glossaryname"&#41;.'\'&#41;;">'.iconv&#40;"ISO-8859-7", "UTF-8", "$result->glossaryname"&#41;.'</li>';
Και πλέον φαίνονται ελληνικοί χαρακτήρες στο συννεφάκι, όμως
α) δεν εμφανίζονται λέξεις όταν πατάω στο text box κάποιο ελληνικό γράμμα
β) εμφανίζονται άσχετες λέξεις όταν πατάω αγγλικό χαρακτήρα. Δε ξέρω πως διαμορφώνεται η εν λόγω σειρά..
Εικόνα

Καμιά άλλη πρόταση;
:cry:

Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Πρόβλημα κωδικοποίησης UTF8

Δημοσίευση από philos » 09 Ιουν 2011 00:57

Τελικά χρησιμοποίησα το autocomplete που έχει παραθέσει ως αρχείο ο φίλος fafos σε αυτό το thread:
http://www.freestuff.gr/forums/viewtopic.php?t=47469
μαζί με τις οδηγίες-διορθώσεις που δίνει, λειτουργούν όλα άψογα! :D

Απάντηση

Επιστροφή στο “MySQL”

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

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