In a nutshell:
Within a Perl-Script: How do I connect to MySQL in a way that allows to transmit the four-byte unicode character U+1F61C ("
Within a Perl-Script: How do I connect to MySQL in a way that allows to transmit the four-byte unicode character U+1F61C ("
The problem is with the
SET NAMES utf8
command. In MySQL the utf8 character set is not truly utf8, it supports characters up 3 bytes only and the character in question has 4 bytes:The true utf8 is the utf8mb4 that you use as character set in the field itself. So, use
SET NAMES utf8mb4
So from Perl you should use
{mysql_enable_utf8mb4 => 1}
instead of{mysql_enable_utf8 => 1}
.