PERBARUI untuk jawaban di bawah ini:
Saat pertanyaan diajukan, "UTF8" di MySQL berarti utf8mb3
. Sementara itu, utf8mb4
telah ditambahkan, tetapi sepengetahuan saya MySQL "UTF8" tidak dialihkan ke berarti utf8mb4
.
Itu berarti, Anda harus secara khusus meletakkan "utf8mb4", jika Anda bersungguh-sungguh (dan Anda harus menggunakan utf8mb4
)
Saya akan menyimpan ini di sini alih-alih hanya mengedit jawabannya, untuk memperjelas masih ada perbedaan ketika mengatakan "UTF8"
Asli
Saya tidak akan menyarankan jawaban Richies, karena Anda mengacaukan data di dalam database. Anda tidak akan memperbaiki masalah Anda tetapi mencoba untuk "menyembunyikannya" dan tidak dapat melakukan operasi basis data yang penting dengan data yang rusak.
Jika Anda mengalami kesalahan ini, data yang Anda kirim tidak dikodekan UTF-8, atau koneksi Anda bukan UTF-8. Pertama, verifikasi, bahwa sumber data (file, ...) benar-benar adalah UTF-8.
Kemudian, periksa koneksi database Anda, Anda harus melakukan ini setelah terhubung:
SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;
Selanjutnya, verifikasi bahwa tabel tempat data disimpan memiliki set karakter utf8mb4:
SELECT
`tables`.`TABLE_NAME`,
`collations`.`character_set_name`
FROM
`information_schema`.`TABLES` AS `tables`,
`information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
`tables`.`table_schema` = DATABASE()
AND `collations`.`collation_name` = `tables`.`table_collation`
;
Terakhir, periksa pengaturan database Anda:
mysql> show variables like '%colla%';
mysql> show variables like '%charac%';
Jika sumber, transportasi, dan tujuan adalah utf8mb4, masalah Anda hilang;)