pitogiro Δημοσ. 13 Αυγούστου 2014 Δημοσ. 13 Αυγούστου 2014 Καλησπέρα, έχω ένα από τα συνηθισμένα (; ) προβλήματα με τη mysql και τους ελληνικούς χαρακτήρες. Κατ αρχην εχω ορισει τα character sets σε utf8, η δημιουργια της βασης ειχε γινει ως εξης: CREATE DATABASE dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; η δημιουργια ενος table ειχε γινει ως εξης: $query = "CREATE TABLE IF NOT EXISTS items(" . "id INT UNSIGNED NOT NULL," . "title VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_general_ci," . "link VARCHAR(256)," . "guid VARCHAR(128)," . "description VARCHAR(4096) CHARACTER SET utf8 COLLATE utf8_general_ci," . "pubdate VARCHAR(64)," . "timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP," . ") Engine=MyISAM DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci"; $result = $db->query($query); Εστω οτι διαβαζω απο ενα rss feed το item αυτο: οταν κανω select στην βαση βλεπω αυτο: δηλαδη το πεδιο title εμφανιζεται μια χαρα με ελληνικους χαρακτηρες, ενω το πεδιο description φαινεται με κατι σε κλπ. Επισης, κατα τη συνδεση με τη βαση εκανα και τα εξης, αν και δεν αλλαξε κατι, $db = new mysqli($dbhost, $dbuser, $dbpass, $dbname); $db->query("SET CHARACTER SET UTF8"); $db->query("SET NAMES UTF8"); $db->set_charset('utf8'); Η ληψη των rss feeds γινεται με χρηση της SimplePie, foreach ($feed->get_items() as $item) { $title = $db->real_escape_string($item->get_title()); $link = $item->get_link(); $guid = $item->get_id(); $description = $db->real_escape_string($item->get_description()); $pubdate = $item->get_date(); $query = "INSERT INTO items(id, title, link, guid, description, pubdate) VALUES" . "('$feed_id', '$title', '$link'," . " '$guid', '$description', '$pubdate')"; $result = $db->query($query); } Το ερωτημα ειναι απλο. Τις πταιει; Πως γινεται το πεδιο title να εμφανιζεται μια χαρα με ελληνικους χαρακτηρες και to description ετσι περιεργα;
exarhis Δημοσ. 13 Αυγούστου 2014 Δημοσ. 13 Αυγούστου 2014 Μήπως το description το επεξεργάζεται javascript πριν το insert ; Νομίζω το "description VARCHAR(4096)" το μέγιστο varchar σε χαρακτήρες είναι 256 εσύ βάζεις 4096. Άλλαξε το σε text.
geomagas Δημοσ. 13 Αυγούστου 2014 Δημοσ. 13 Αυγούστου 2014 Εστω οτι διαβαζω απο ενα rss feed το item αυτο: Αυτό είναι το αποτέλεσμα που βλέπεις στον browser, σωστά; Και είναι ήδη επεξεργασμένο για να εμφανιστεί έτσι. Για να μπορέσουμε να ξέρουμε την πραγματική μορφή των περιεχομένων, πρέπει να το ανοίξεις σε ένα text editor και να κάνεις paste τον πραγματικό κώδικα.
pitogiro Δημοσ. 13 Αυγούστου 2014 Μέλος Δημοσ. 13 Αυγούστου 2014 Μήπως το description το επεξεργάζεται javascript πριν το insert ; Νομίζω το "description VARCHAR(4096)" το μέγιστο varchar σε χαρακτήρες είναι 256 εσύ βάζεις 4096. Άλλαξε το σε text. Δεν υπαρχει καθολου javascript, και τα πεδια title και description επεξεργαζονται με τον ιδιο ακριβως τροπο. Απ ότι ειδα το varchar στην mysql εχει οριο 65536 bytes. Δοκιμασα παντως και με text αλλα δεν αλλαξε κατι.. Αυτό είναι το αποτέλεσμα που βλέπεις στον browser, σωστά; Και είναι ήδη επεξεργασμένο για να εμφανιστεί έτσι. Για να μπορέσουμε να ξέρουμε την πραγματική μορφή των περιεχομένων, πρέπει να το ανοίξεις σε ένα text editor και να κάνεις paste τον πραγματικό κώδικα. Σωστα. Το ανοιξα σε 2-3 editors και φαινοταν κανονικα. Στο Nodepad++ σαν encoding ειχε UTF-8 w/o BOM. Εκανα δοκιμες και με rss feeds αλλων ελληνικων sites, πχ tovima.gr, gazzetta.gr, sport24.gr, newsit.gr, protothema.gr Απο ολα αυτα μονο του sport24 μου εμφανιζε το description κανονικα με ελληνικα. Σε ολα τα αλλα εβλεπα τα περιεργα κσ κλπ... //edit Χμμ... σαν να καταφερα κατι... Αν πανω στο description χρησιμοποιησω τη συναρτηση Site: html_entity_decode , τοτε το εμφανιζει σωστα. Yay! Δεν μπορω να πω οτι καταλαβαινω γιατι φαινεται να δουλευει ετσι but I'll take it.
NoD Δημοσ. 13 Αυγούστου 2014 Δημοσ. 13 Αυγούστου 2014 Στο html αρχείο σου ορίζεις το charset σε utf8 ; HTML4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> HTML5 <meta charset="UTF-8">
pitogiro Δημοσ. 13 Αυγούστου 2014 Μέλος Δημοσ. 13 Αυγούστου 2014 Στο html αρχείο σου ορίζεις το charset σε utf8 ; HTML4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> HTML5 <meta charset="UTF-8"> Θα το έκανα αν υπήρχε html αρχειο (και το php αρχειο που υπαρχει δεν προοριζεται να κανει τιποτα output στον browser). Προκειται απλα για ενα php script το οποιο τραβαει καποια αρχεια (rss feeds) απο το internet και αποθηκευει καποια πραγματα σε μια βαση. That's all. Παντως για λογους debugging εκανα μερικα echo για να δω το αποτελεσμα στον browser και φαινοταν μια χαρα, ακομη και χωρις το <meta charset="UTF-8">. Απλα στη βαση αποθηκευοταν με περιεργο τροπο...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα