sql >> Base de Datos >  >> RDS >> Mysql

Manipulación de datos utf8mb4 de MySQL con PHP

Simplemente supongo que está configurando la tabla en utf8mb4 , pero la codificación de su conexión está establecida en utf8 . Tienes que configurarlo en utf8mb4 también, de lo contrario MySQL convertirá el utf8mb4 almacenado datos a utf8 , el último de los cuales no puede codificar caracteres Unicode "altos". (Sí, esa es una idiosincrasia de MySQL).

En una conexión MySQL sin procesar, tendrá que verse así:

SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;

Tendrás que adaptar eso a la mejor manera del cliente, dependiendo de cómo te conectes a MySQL desde PHP (mysql, mysqli o PDO).

Para aclarar realmente (sí, usando mysql_ extensión para simplificar, no hagas eso en casa):

mysql_connect(...);
mysql_select_db(...);
mysql_set_charset('utf8mb4');     // adapt to your mysql connector of choice

$r = mysql_query('SELECT * FROM `my_table`');

var_dump(mysql_fetch_assoc($r));  // data will be UTF8 encoded