Le problème est avec le SET NAMES utf8
commande. Dans MySQL, le jeu de caractères utf8 n'est pas vraiment utf8, il prend en charge les caractères jusqu'à 3 octets uniquement
et le caractère en question a 4 octets :
Le vrai utf8 est le utf8mb4 que vous utilisez comme jeu de caractères dans le champ lui-même. Alors, utilisez SET NAMES utf8mb4
Donc, depuis Perl, vous devez utiliser {mysql_enable_utf8mb4 => 1}
au lieu de {mysql_enable_utf8 => 1}
.