Mysql
 sql >> Base de données >  >> RDS >> Mysql

Manipuler les données utf8mb4 de MySQL avec PHP

Je suppose simplement que vous définissez la table sur utf8mb4 , mais votre encodage de connexion est défini sur utf8 . Vous devez le définir sur utf8mb4 également, sinon MySQL convertira le utf8mb4 stocké données en utf8 , ce dernier ne pouvant pas coder les caractères Unicode "élevés". (Oui, c'est une idiosyncrasie de MySQL.)

Sur une connexion MySQL brute, cela devra ressembler à ceci :

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

Vous devrez adapter cela au mieux du client, selon la façon dont vous vous connectez à MySQL depuis PHP (mysql, mysqli ou PDO).

Pour vraiment clarifier (oui, en utilisant le mysql_ extension pour plus de simplicité, ne faites pas ça à la maison):

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