sql >> Databasteknik >  >> RDS >> Mysql

Manipulera utf8mb4-data från MySQL med PHP

Jag skulle helt enkelt gissa att du ställer in tabellen till utf8mb4 , men din anslutningskodning är inställd på utf8 . Du måste ställa in den på utf8mb4 också, annars konverterar MySQL den lagrade utf8mb4 data till utf8 , varav den senare inte kan koda "höga" Unicode-tecken. (Ja, det är en MySQL-särlek.)

På en rå MySQL-anslutning måste den se ut så här:

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

Du måste anpassa det till det bästa sättet för klienten, beroende på hur du ansluter till MySQL från PHP (mysql, mysqli eller PDO).

För att verkligen förtydliga (ja, med hjälp av mysql_ för enkelhets skull, gör inte det hemma):

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


  1. Ordning för villkorsexekvering i MySQL

  2. Inga operationer tillåtna efter att uttalandet stängts

  3. Hur återställer jag sekvensnummer för att bli konsekutiva?

  4. MySQL - hitta skillnaden mellan rader i samma tabell