Просто предполагам, че задавате таблицата на utf8mb4
, но кодирането на връзката ви е настроено на utf8
. Трябва да го настроите на utf8mb4
също така, в противен случай MySQL ще преобразува съхранения utf8mb4
данни към utf8
, последният от които не може да кодира "високи" символи на Unicode. (Да, това е идиосинкразия на MySQL.)
При необработена MySQL връзка тя ще трябва да изглежда така:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
Ще трябва да го адаптирате към най-добрия начин на клиента, в зависимост от това как се свързвате с MySQL от PHP (mysql, mysqli или PDO).
За да изясня наистина (да, използвайки mysql_
разширение за простота, не правете това у дома):
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