MySQL 的“utf8”实际上不是真正的 UTF-8。
在 MySQL 中,“utf8”编码只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。
在 utf8 编码中,中文是占 3 个字节,其他数字、英文、符号占一个字节。
但 emoji 符号占 4 个字节,一些较复杂的文字、繁体字也是 4 个字节。所以导致写入失败,应该改成 utf8mb4
utf8mb4 才是真正的UTF-8
MySQL 的“utf8”是一种“专属的编码”,它能够编码的 Unicode 字符并不多。
在这里 Mark 一下:所有在使用“utf8”的 MySQL 和 MariaDB 用户都应该改用“utf8mb4”,永远都不要再使用“utf8”。