2012-08-13 30 views
5

He hecho una página PHP simple para obtener los datos POST y buscar una consulta sql y luego imprimir el resultado. Estoy usando la función mysql_fetch_array.mysql_fetch_array devuelve texto no Unicode

El código funciona muy bien, pero la respuesta es un texto no Unicode, y vuelve algo como esto:

?????ABC????? 

nota de que la intercalación de base de datos es UTF-8 y los datos almacenados se muestran correctamente en phpMyAdmin. Incluso utilicé esta etiqueta META en la página php pero resulta igual:

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

¿Alguna idea ?!

+1

tratar de establecer el carácter Enconding para la conexión. –

Respuesta

12

Añadir estas líneas de código antes de la primera consulta:

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

O puede editar la configuración de MySQL a usar utf8 por defecto. Compruebe aquí lo que necesita hacer.

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

ACTUALIZACIÓN

La función mysql_query está en desuso, por lo mysqli objeto puede ser utilizado de esta manera:

$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 amigo! ¡increíble! –

+0

De nada :) – Farahmand

+1

Nota: la función 'mysql_query' está en desuso. – ganji

2
mysql_set_charset('utf8', $link); 

Donde $ enlace es una conexión creada con mysql_connect

+0

según PHP "Esta extensión está en desuso a partir de PHP 5.5.0 y se eliminará en el futuro ... Las alternativas a esta función incluyen: mysqli_set_charset()". http://php.net/manual/en/function.mysql-set-charset.php –

Cuestiones relacionadas