2012-08-13 9 views
5

Ich habe eine einfache PHP-Seite erstellt, um die POST-Daten abzurufen und eine SQL-Abfrage abzurufen, und das Ergebnis auszudrucken. Ich benutze die Funktion mysql_fetch_array.mysql_fetch_array gibt Nicht-Unicode-Text zurück

Der Code funktioniert großartig, aber die Antwort ist ein Nicht-Unicode-Text, und es gibt so etwas wie diese:

?????ABC????? 

beachten Sie, dass die Datenbanksortierung ist UTF8 und Daten gespeichert sind, korrekt in phpMyAdmin gezeigt. Ich habe sogar dieses META-Tag in PHP-Seite verwendet, aber es ergibt das gleiche:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> 

Irgendeine Idee ?!

+1

versuchen Zeichen für die Verbindung enconding Einstellung. –

Antwort

12

diese Zeilen Code vor der ersten Abfrage hinzufügen:

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 

Oder Sie können Ihre MySQL-Konfiguration bearbeiten zu verwenden utf8 standardmäßig. Überprüfen Sie hier, was Sie tun müssen.

Change MySQL default character set to UTF-8 in my.cnf?

UPDATE

Die Funktion mysql_query ist veraltet, so mysqli Objekt kann wie so verwendet werden:

$mysqli = new mysqli("localhost", "MYSQL_USER", "MYSQL_PASS", "MYSQL_DB"); 

$mysqli->query("SET NAMES 'utf8'"); 
$mysqli->query("SET CHARACTER SET utf8"); 
$mysqli->query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 
+0

Thnx Kumpel! genial! –

+0

Gern geschehen :) – Farahmand

+1

Hinweis: Funktion mysql_query ist veraltet. – ganji

2
mysql_set_charset('utf8', $link); 

Wo $ Link ist eine Verbindung mit mysql_connect erstellt

+0

laut PHP "Diese Erweiterung ist ab PHP 5.5.0 veraltet und wird in Zukunft entfernt. Alternativen zu dieser Funktion sind: mysqli_set_charset()". http://php.net/manual/en/function.mysql-set-charset.php –