Mysql
 sql >> Database >  >> RDS >> Mysql

Manipolazione dei dati utf8mb4 da MySQL con PHP

Direi semplicemente che stai impostando la tabella su utf8mb4 , ma la codifica della tua connessione è impostata su utf8 . Devi impostarlo su utf8mb4 anche, altrimenti MySQL convertirà il utf8mb4 memorizzato dati a utf8 , l'ultimo dei quali non può codificare caratteri Unicode "alti". (Sì, è un'idiosincrasia di MySQL.)

Su una connessione MySQL grezza, dovrà apparire così:

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

Dovrai adattarlo al modo migliore del client, a seconda di come ti connetti a MySQL da PHP (mysql, mysqli o PDO).

Per chiarire davvero (sì, usando mysql_ estensione per semplicità, non farlo a 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