PHP连接SQL数据库无法显示emoji表情的解决办法(变成问号、1366 Incorrect string value)

1 篇文章 0 订阅
1 篇文章 0 订阅

问题1

当加入emoji表情时,SQL数据库提示1366 Incorrect string value错误:

mysql 1366: Incorrect string value: '\xF0\x9F\xA5\xB0\xF0\x9F for column ‘msg’ at row 1

这是因为emoji表情符号不能直接使用普通的utf-8编码,而是要采用utf8mb4编码,在每次连接的时候把编码设置成utf8mb4才可以解决。

解决步骤:

  1. 在连接数据库的php文件里,在每次连接前都把编码都设置为utf8mb4

代码:

$conn = new PDO($dsn, $username, $password);
$conn->exec("set charset utf8mb4");

或者:

$conn = new PDO($dsn, $username, $password);
$conn->query("set character set utf8mb4");

问题2

emoji表情被成功加入,但是在数据库里面变成了问号,如下图

这是因为数据库的编码仍然是utf8,而不是utf8mb4,解决方法十分简单粗暴:把数据库里面有关字符编码的项目全部改为utf8mb4,因为utf8mb4是utf8的超集,因此不会有兼容性问题,可以放心修改

修改栏位的编码
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

修改数据库的编码
在这里插入图片描述
在这里插入图片描述
修改表的编码请添加图片描述
通用修改
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值