2012-09-12 20 views
9

Estoy tratando de insertar un ♥ en una tabla MySQL con PHP. Viene de un campo de entrada.No se puede insertar el carácter ♥ en la tabla MySQL

El juego de caracteres de la tabla es utf8_general_ci, y en PHP uso mysql_query("SET NAMES 'utf8'"); justo después de hacer la conexión.

Pero el ♥ solo se convierte en un '?' cuando se inserta.

También he intentado insertar ♥ en la tabla de phpMyAdmin, pero devuelve este error: '?'

Warning: #1366 Incorrect string value: '\xE2\x99\xA5' for column 'subject' at row 1 

El resultado es también en lugar de ♥.

¿Alguna idea sobre qué causa esto?

+5

Intente seguir [Manejo de una aplicación web de Unicode hacia atrás en una aplicación web] (http://kunststube.net/frontback/) – deceze

+0

intente http://stackoverflow.com/questions/7781103/sql-server-set- character-set-not-collation – Sathish

Respuesta

23

Esto se debe a la incompatibilidad de character set and collation definida en la columna de la tabla.

Pruebe changing character set de su tabla o columna a UTF8.

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8; 

o

ALTER TABLE table_name MODIFY col VARCHAR(255) CHARACTER SET utf8; 
+0

¡Ohh! Acabo de cambiar el conjunto de caracteres de la tabla, no las columnas ... Cambié las columnas a utf8, ¡y ahora todo funciona! ¡Gracias! – Elias

+0

¡De nada! :) – Omesh

0

intente esto:

ini_set('default_charset', 'utf-8'); 

en su archivo PHP y establecer el:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

y chek en que la base de datos para cotejo de utf8_general_ci

+0

default_charset y meta-tag no funcionarían, ya que estoy viendo el '?' en phpMyAdmin. – Elias

+0

que intentar establecer la codificación de caracteres a través de ini_set() –

Cuestiones relacionadas