Ik vermoed gewoon dat je de tabel instelt op utf8mb4
, maar je verbindingscodering is ingesteld op utf8
. Je moet het instellen op utf8mb4
ook, anders converteert MySQL de opgeslagen utf8mb4
gegevens naar utf8
, waarvan de laatste geen "hoge" Unicode-tekens kan coderen. (Ja, dat is een MySQL-eigenaardigheid.)
Op een onbewerkte MySQL-verbinding moet het er als volgt uitzien:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
Je zult dat moeten aanpassen aan de beste manier van de klant, afhankelijk van hoe je verbinding maakt met MySQL vanuit PHP (mysql, mysqli of PDO).
Om echt te verduidelijken (ja, met behulp van de mysql_
extensie voor de eenvoud, doe dat niet thuis):
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