Προς το περιεχόμενο

MySQL και PHP, utf-8 και ερωτηματικά...


Επισκέπτης

Προτεινόμενες αναρτήσεις

Δημοσ.

><!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 που είναι αριθμητικό ασφαλώς) :P

 

Ο πίνακας στη βάση δεδομένων είναι σε UTF-8 και στο query browser τα γράμματα εμφανίζονται κανονικά.

 

Κάνω κάτι λάθος; :o

Δημοσ.

Τώρα μου βγάζει ωραιότερα ερωτηματικά σε μαύρο ρόμβο-πλαίσιο! :P

 

Το WordPress που έχω εγκαταστήσει σε άλλη βάση στον ίδιο server εν τω μεταξύ δουλέυει κανονικά!

 

:(

Δημοσ.

Δοκιμασε να χρησιμοποιησεις το "SET NAMES greek" τόσο οταν γράφεις στη βαση όσο και όταν διαβαζεις απο τη βαση.

Βαλτο μεσα στο db.php, μετά το connect με τη βαση, ώστε να το χρησιμοποιει παντοτε.

Για οσα δεδομένα εχεις ηδη περάσει στη βαση, δεν ξερω πως θα μπορουσες να τα δεις σωστα...

 

 

-----Προστέθηκε 6/10/2008 στις 01 : 20 : 49-----

 

 

Επίσης, στην html μου χρησιμοποιώ ελληνικό encoding, αντι για "charset=UTF-8" χρησιμοποιω το charset=iso-8859-7.

Δημοσ.

Λύθηκε :)

 

Προφανώς σου δουλεύει με το SET NAMES greek; γιατί έχεις Ελληνικό encoding. Με SET NAMES utf8; όμως όλα είναι σωστά. Αναρωτιέμαι όμως εάν υπάρχει τρόπος να μονιμοποιηθεί αυτό χωρίς το μόνιμο query...

  • 2 εβδομάδες αργότερα...
Δημοσ.

Έχω το ίδιο πρόβλημα, σε ένα κάπως πιο συγκεκριμένο 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 αυτά, δεν είδα φώς (είδα όμως ερωτηματικά). :P

 

Προσπάθησα να βάλω 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>

 

 

Αυτά... Ελπίζω κάποιος να ξέρει να απαντήσει, γιατί τα νεύρα μου έχουν αρχίσει να τεντώνουν... :shock::cry:

Δημοσ.

Νομιζω οτι το λαθος πρεπει να ειναι εδω:

 

$gr2 = "mysql_query('SET NAMES 'UTF8' ')";

$gr1 = "mysql_query('set character set utf8')";

 

Κλεινοντας τις εντολες σε double quotes, αντι να τις εκτελεις απλά κανεις αναθεση απο ενα string στις μεταβλητες $gr1 και $gr2.

Δημοσ.

OMG :shock: !

 

Μάλλον δίκιο έχεις, πρέπει να συμπληρώσω αυτό:

$eleos = mysql_query($gr1)

...

 

Δεν είμαι ΤΟΣΟ άσχετος, απλά μετά από 12 μήνες στρατό έχω σκουριάσει κάπως...

 

Θα το δοκιμάσω αύριο και θα σας πω αν όντως ήταν (μόνο) αυτό...

 

Thanx!!!!!!!!!!

Δημοσ.
OMG :shock: !

 

Μάλλον δίκιο έχεις, πρέπει να συμπληρώσω αυτό:

$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);

Έτσι είναι σωστό.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...