Επισκέπτης Δημοσ. 5 Οκτωβρίου 2008 Δημοσ. 5 Οκτωβρίου 2008 ><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Εργατιά</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <?php include_once('db.php'); $query = "SELECT * FROM workers;"; $result = mysql_query($query); if (!$result){ die ("Could not fetch results.<br />".mysql_error()); } while ($result_row = mysql_fetch_row($result)) { echo 'UID: ' . $result_row[0] . '<br />'; echo 'first name: ' . $result_row[1] . '<br />'; echo 'last name: ' . $result_row[2] . '<br />'; } ?> </body> </html> Καλησπέρα. Μόλις άρχισα να παίζω με MySQL και PHP στο Hardy Heron μου και το αρχείο αυτό, στο σημείο που δίνει την έξοδο στα >echo 'UID: ' . $result_row[0] . '<br />'; echo 'first name: ' . $result_row[1] . '<br />'; echo 'last name: ' . $result_row[2] . '<br />'; εμφανίζει ερωτηματικά (εκτός από το UID που είναι αριθμητικό ασφαλώς) Ο πίνακας στη βάση δεδομένων είναι σε UTF-8 και στο query browser τα γράμματα εμφανίζονται κανονικά. Κάνω κάτι λάθος;
vassilisred Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Μετα το: include_once('db.php'); δοκίμασε να βάλεις το: mysql_query("SET NAMES greek");
Επισκέπτης Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Τώρα μου βγάζει ωραιότερα ερωτηματικά σε μαύρο ρόμβο-πλαίσιο! Το WordPress που έχω εγκαταστήσει σε άλλη βάση στον ίδιο server εν τω μεταξύ δουλέυει κανονικά!
vassilisred Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Δοκιμασε να χρησιμοποιησεις το "SET NAMES greek" τόσο οταν γράφεις στη βαση όσο και όταν διαβαζεις απο τη βαση. Βαλτο μεσα στο db.php, μετά το connect με τη βαση, ώστε να το χρησιμοποιει παντοτε. Για οσα δεδομένα εχεις ηδη περάσει στη βαση, δεν ξερω πως θα μπορουσες να τα δεις σωστα... -----Προστέθηκε 6/10/2008 στις 01 : 20 : 49----- Επίσης, στην html μου χρησιμοποιώ ελληνικό encoding, αντι για "charset=UTF-8" χρησιμοποιω το charset=iso-8859-7.
Επισκέπτης Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Λύθηκε Προφανώς σου δουλεύει με το SET NAMES greek; γιατί έχεις Ελληνικό encoding. Με SET NAMES utf8; όμως όλα είναι σωστά. Αναρωτιέμαι όμως εάν υπάρχει τρόπος να μονιμοποιηθεί αυτό χωρίς το μόνιμο query...
vassilisred Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Αν εχεις admin προσβαση στον server που χρησιμοποιεις, το παρακατω link αναφερει τις εναλλακτικες που υπάρχουν για mysql 5.0 http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html
beef.techie Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 Έχω το ίδιο πρόβλημα, σε ένα κάπως πιο συγκεκριμένο Variation: Προσπαθώ να τραβήξω δεδομένα από τα tables του phpBB forum, το οποίο σώζει τα δεδομένα σε utf-8. Κοιτάζοντας το page source του forum (όπου τα ελληνικά φαίνονται σωστά), έχει τα εξής: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="el" xml:lang="el"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-style-type" content="text/css" /> <meta http-equiv="content-language" content="el" /> <meta name="resource-type" content="document" /> ..... Κάνοντας copy-paste αυτά, δεν είδα φώς (είδα όμως ερωτηματικά). Προσπάθησα να βάλω set names greek και set names utf8, και πάλι τίποτα... Ο κώδικάς μου είναι ο εξής: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="el" xml:lang="el"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-language" content="el" /> <title></title> </head> <body> <MARQUEE behavior='scroll' direction='up' height='170' width='158' scrollamount='2' scrolldelay='110' onmouseover='this.stop()' onmouseout='this.start()' > <?php $connection = mysql_connect("χχχ.χχχ.χχχ.χχχ","username","password") or die("Αποτυχία σύνδεσης στη ΒΔ!"); $db = mysql_select_db("DBname",$connection) or die("Δε βρέθηκε η ΒΔ!"); $gr2 = "mysql_query('SET NAMES 'UTF8' ')"; $gr1 = "mysql_query('set character set utf8')"; $sql = "select * from forum_topics order by topic_last_post_time desc limit 0,10"; $result = mysql_query($sql) or die("Δε βρέθηκε το table!"); for($x=1;$x<=10;$x++){ $row = mysql_fetch_array($result); echo "<a href = \"http://www.yourforumdomain.com/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\" target = \"_blank\">$row[topic_title]</a><br />"; } ?> </MARQUEE> </body> </html> Ολόκληρη η σελίδα αυτή, φορτώνεται μέσα σε ένα iframe, με τον εξής κώδικα (αν και νομίζως πως αυτό δεν έχει καμία σημασία): <iframe id="ForumWindow" src="RecentThreads.php" width="100%" height="100%" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" style="border: #000000 0px solid;"></iframe> Αυτά... Ελπίζω κάποιος να ξέρει να απαντήσει, γιατί τα νεύρα μου έχουν αρχίσει να τεντώνουν...
vassilisred Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 Νομιζω οτι το λαθος πρεπει να ειναι εδω: $gr2 = "mysql_query('SET NAMES 'UTF8' ')"; $gr1 = "mysql_query('set character set utf8')"; Κλεινοντας τις εντολες σε double quotes, αντι να τις εκτελεις απλά κανεις αναθεση απο ενα string στις μεταβλητες $gr1 και $gr2.
beef.techie Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 OMG ! Μάλλον δίκιο έχεις, πρέπει να συμπληρώσω αυτό: $eleos = mysql_query($gr1) ... Δεν είμαι ΤΟΣΟ άσχετος, απλά μετά από 12 μήνες στρατό έχω σκουριάσει κάπως... Θα το δοκιμάσω αύριο και θα σας πω αν όντως ήταν (μόνο) αυτό... Thanx!!!!!!!!!!
panagiotis Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 OMG ! Μάλλον δίκιο έχεις, πρέπει να συμπληρώσω αυτό: $eleos = mysql_query($gr1) ... Δεν είμαι ΤΟΣΟ άσχετος, απλά μετά από 12 μήνες στρατό έχω σκουριάσει κάπως... Θα το δοκιμάσω αύριο και θα σας πω αν όντως ήταν (μόνο) αυτό... Thanx!!!!!!!!!! Και πάλι είσαι λάθος.. Το $gr1 είναι μια συμβολοσειρά με περιεχόμενο mysql_query('set character set utf8'), Πας να κανεις query το 'mysql_query('set character set utf8')'.. $gr2="SET NAMES 'UTF8'"; $eleos2=mysql_query($gr2); Έτσι είναι σωστό.
beef.techie Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 Ναι μωρέ, αυτό έκανα... Τελικά η php ΔΕΝ είναι σαν το ποδήλατο... Ξεχνιέται
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.