Jeg vil simpelthen gætte på, at du sætter tabellen til utf8mb4
, men din forbindelseskodning er indstillet til utf8
. Du skal indstille den til utf8mb4
også, ellers vil MySQL konvertere den lagrede utf8mb4
data til utf8
, hvoraf sidstnævnte ikke kan kode "høje" Unicode-tegn. (Ja, det er en MySQL-idiosynkrasi.)
På en rå MySQL-forbindelse skal den se sådan ud:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
Du bliver nødt til at tilpasse det til den bedste måde for klienten, afhængigt af hvordan du opretter forbindelse til MySQL fra PHP (mysql, mysqli eller PDO).
For virkelig at præcisere (ja, ved at bruge mysql_
udvidelse for nemheds skyld, gør det ikke derhjemme):
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