Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Manipulando dados utf8mb4 do MySQL com PHP


Eu simplesmente acho que você está configurando a tabela para utf8mb4 , mas sua codificação de conexão está definida como utf8 . Você deve configurá-lo para utf8mb4 também, caso contrário o MySQL irá converter o utf8mb4 armazenado dados para utf8 , o último dos quais não pode codificar caracteres Unicode "alto". (Sim, isso é uma idiossincrasia do MySQL.)

Em uma conexão MySQL bruta, ela terá que ficar assim:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;

Você terá que adaptar isso à melhor maneira do cliente, dependendo de como você se conecta ao MySQL a partir do PHP (mysql, mysqli ou PDO).

Para realmente esclarecer (sim, usando o mysql_ extensão para simplificar, não faça isso em 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