【mysql】MYSQL utf8mb4 插入emoji表情乱码

关于MYSQL utf8mb4字符串集的问题。

表结构如下:

【mysql】MYSQL utf8mb4 插入emoji表情乱码

如下代码:

$db     = new mysqli('x', 'xxx', 'xxxxx');

$db->select_db('xxx');

$db->set_charset('utf8mb4');

//这里是一个emoji表情" title="emoji表情">emoji表情

$contents = <<<EOT

"\ud83d\udca5"

EOT;

$contents = json_decode($contents). "hello";

echo $contents, "\t\n";

$sql = "INSERT INTO `utf8mb4`(`contents`) VALUES('$contents')";

echo $sql, "\t","\n";

$db->query($sql);

print_r($db->error_list);

echo "\t\n";

exit();

但是入库后,是一个? 如下图:

【mysql】MYSQL utf8mb4 插入emoji表情乱码

求解决。

回答

这样是对的。
说下前提,utf8mb4和utf8的区别就是utf8才用3位字节码存储数据,而utf8mb4用4位字节码存储数据。
emoji表情是4位字节码通过前段转义出来的,它本身是不可读的字符,所以在数据库客户端中会显示“?”。
在前端支持emoji的地方就会显示emoji表情。

确定下客户端是否支持utf8mb4,最好使用的时候 set names下。

以上是 【mysql】MYSQL utf8mb4 插入emoji表情乱码 的全部内容, 来源链接: utcz.com/a/72588.html

回到顶部