Saya hanya menebak bahwa Anda mengatur tabel ke utf8mb4
, tetapi penyandian koneksi Anda disetel ke utf8
. Anda harus mengaturnya ke utf8mb4
juga, jika tidak, MySQL akan mengonversi utf8mb4
yang tersimpan data ke utf8
, yang terakhir tidak dapat menyandikan karakter Unicode "tinggi". (Ya, itu adalah keistimewaan MySQL.)
Pada koneksi MySQL mentah, itu akan terlihat seperti ini:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
Anda harus menyesuaikannya dengan cara terbaik klien, tergantung bagaimana Anda terhubung ke MySQL dari PHP (mysql, mysqli atau PDO).
Untuk memperjelas (ya, menggunakan mysql_
ekstensi untuk kesederhanaan, jangan lakukan itu di rumah):
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