suomilk Δημοσ. 10 Ιουνίου 2010 Δημοσ. 10 Ιουνίου 2010 Εκτελώ το παρακάτω ερώτημα SQL στην mySQL >CREATE DATABASE `news` DEFAULT CHARACTER SET greek COLLATE greek_general_ci; CREATE TABLE `news`.`feed` ( `title` VARCHAR( 255 ) NOT NULL, `description` VARCHAR( 255 ) NOT NULL, `link` VARCHAR( 100 ) NOT NULL, `channel` VARCHAR( 50 ) NOT NULL, `pubDate` DATETIME NOT NULL )ENGINE=MyISAM DEFAULT CHARSET=greek COLLATE=greek_general_ci DEFAULT CHARSET=greek; και στη συνέχεια εκτελώ το παρακάτω script για να ενημερώσω τη βάση μου από rss. ><?php $ch = curl_init('http://****.xml'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $rss = new SimpleXMLElement(curl_exec($ch)); // fill these next two rows in! $dbLink = mysql_connect('localhost', '***', '****'); mysql_select_db('news', $dbLink); foreach($rss->channel->item as $node) { $title = mysql_real_escape_string($node->title); $desc = mysql_real_escape_string($node->description); $link = mysql_real_escape_string($node->link); $channel = mysql_real_escape_string($rss->channel->link); $pubDate = date("Y-m-d H:i:s", strtotime($node->pubDate)); $query = "REPLACE INTO feed (title,description,link,channel,pubDate) VALUES ('{$title}', '{$desc}', '{$link}', '{$channel}', '{$pubDate}')"; if(!mysql_query($query, $dbLink)) { echo "an error has occured - ".mysql_error()."n"; exit(); } } Το αποτέλεσμα του παραπάνω script μου αποθηκεύει τα περιεχόμενα των tags σωστά αλλά μου εμφανίζει ερωτηματικά στα ελληνικά. Δοκίμασα και με unicode αλλά τίποτα. Και κάτι ακόμη, Επειδή το php script θα εκτελείται ανά τακτά διαστήματα, υπάρχει δυνατότητα με την κατάλληλη μετατροπή να ενημερώνω τη βάση μόνο με καινούργιες εγγραφές γιατί αλλιώς δημιουργούνται διπλότυπα.
Seldimi Δημοσ. 10 Ιουνίου 2010 Δημοσ. 10 Ιουνίου 2010 Δοκίμασε μετά το mysql_select_db mysql_query('set character set greek',$dbLink ); mysql_query("SET NAMES 'greek'",$dbLink ); (ή utf-8) μπας και κάτσει τίποτα
suomilk Δημοσ. 10 Ιουνίου 2010 Μέλος Δημοσ. 10 Ιουνίου 2010 Δοκίμασε μετά το mysql_select_db mysql_query('set character set greek',$dbLink ); mysql_query("SET NAMES 'greek'",$dbLink ); (ή utf-8) μπας και κάτσει τίποτα Τα δοκίμασα και αυτά πάλι δε μου κάθεται. Θα το δω αύριο γιατί κομματιάστηκα. Ευχαριστώ πολύ Αν έχει κάποιος άλλη ιδέα ευπρόσδεκτη
_tasos Δημοσ. 10 Ιουνίου 2010 Δημοσ. 10 Ιουνίου 2010 Για τη δημιουργία της database και των πινάκων χρησιμοποιήσε τα CHARACTER SET utf8 COLLATE utf8_general_ci αντί για τα αντίστοιχα greek. Αποθήκευσε το php αρχείο σου σαν utf8. Αν παίρνεις data από html φόρμα στο <head> βάλε κ αυτό. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> (και αυτό το αρχείο αποθηκευμένο σαν utf8) Λογικά θα σου τρέξει χωρίς προβλήματα. Με αυτό το config σε .net web application ποτέ δεν είχα πρόβλημα με ελληνικά. Η γενική ιδέα είναι ότι παντού θα πρέπει να υπάρχει το ίδιο encoding και αν δεν γίνεται, να υπάρχει πάντα η σωστή μετατροπή. Το utf8 είναι μία πολύ καλή επιλογή διότι στην ίδια database μπορείς να αποθηκεύσεις κείμενα από όλες τις γλώσσες κ είσαι οκ.
suomilk Δημοσ. 11 Ιουνίου 2010 Μέλος Δημοσ. 11 Ιουνίου 2010 Τελικά διορθώθηκε βάζοντας την παρακάτω γραμμή πριν το query > mysql_query("SET NAMES 'utf8'"); Ευχαριστώ πολύ! Επειδή το script θα εκτελείται ανά τακτά διαστήματα, υπάρχει δυνατότητα με την κατάλληλη μετατροπή να ενημερώνω τη βάση μόνο με καινούργιες εγγραφές γιατί αλλιώς δημιουργούνται διπλότυπα.
weathor Δημοσ. 12 Ιουνίου 2010 Δημοσ. 12 Ιουνίου 2010 Αν θες η βαση σου να εχει υγεια αλλαξε και τους κωδικους που μας εδειξες.. Μη την βρεις διεγραμενη και ψαχνεσαι.. $dbLink = mysql_connect('localhost', '*******', '*******');
suomilk Δημοσ. 12 Ιουνίου 2010 Μέλος Δημοσ. 12 Ιουνίου 2010 Αν θες η βαση σου να εχει υγεια αλλαξε και τους κωδικους που μας εδειξες.. Μη την βρεις διεγραμενη και ψαχνεσαι.. $dbLink = mysql_connect('localhost', '*******', '*******'); Γιατί υπήρχε περίπτωση να έβαζα αυτούς τους κωδικούς. Πρόκειται για εργασία για πανεπιστήμιο
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.