Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Manipulieren von utf8mb4-Daten von MySQL mit PHP

Ich würde einfach vermuten, dass Sie die Tabelle auf utf8mb4 setzen , aber Ihre Verbindungscodierung ist auf utf8 eingestellt . Sie müssen es auf utf8mb4 setzen ebenfalls, andernfalls konvertiert MySQL den gespeicherten utf8mb4 Daten nach utf8 , wobei letztere keine "hohen" Unicode-Zeichen codieren können. (Ja, das ist eine Eigenheit von MySQL.)

Bei einer unformatierten MySQL-Verbindung muss es so aussehen:

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

Sie müssen dies an die beste Art des Clients anpassen, je nachdem, wie Sie sich von PHP aus mit MySQL verbinden (mysql, mysqli oder PDO).

Um es wirklich zu verdeutlichen (ja, mit dem mysql_ Erweiterung der Einfachheit halber, machen Sie das nicht zu Hause):

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