MYSQL utf8mb4 插入emoji表情乱码

发布于 2022-09-03 07:56:53 字数 780 浏览 19 评论 0

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

表结构如下:

图片描述

如下代码:

$db     = new mysqli('x', 'xxx', 'xxxxx');
$db->select_db('xxx');
$db->set_charset('utf8mb4');

//这里是一个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();

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

图片描述

求解决。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

就是爱搞怪 2022-09-10 07:56:53

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

梦罢 2022-09-10 07:56:53

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文