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 utf8 character set in MySQL has these characteristics:
• No support for supplementary characters (BMP characters only).
• A maximum of three bytes per multibyte character.
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}
.