mysql @符号_"Incorrect string value " mysql 乱码 my插入emoji Yii2

本文解决了一个具体问题:在MySQL中存储包含Emoji表情的微信用户名时出现的错误。文章详细解释了MySQL 5.5及以前版本的UTF8编码不支持4字节的Emoji表情,并提供了通过ALTER命令更改数据库、表和字段字符集的具体步骤。
摘要由CSDN通过智能技术生成

0b1b48e999b303f4f7ad4e3ebbb3d2d6.png

f396ee69c4f48c783f05d5e322528e8b.png

发现问题:

用户微信名称中包含emoji表情,无法插入数据库.

数据库报错信息:

ERROR 

原因:

MySQL的文本(varchar,text),对emoji表情符号不是很好的支持,在5.5之前的版本,varchar和text都是不支持存储emoji表情符号的(即使是utf8)的编码模式。原因在于mysql的utf8是规定了每一个utf8字符按照3个字节来存储,而一个emoji(最初来自苹果系统,现在流行于各种移动操作系统)却需要4个字节来存储。这就导致了如果强制将emoji存储到varchar,text等字段上的时候,mysql会抛出异常,认为emoji是个不正确的文本。

其原因是utf8是不定长的,根据左侧位来决定占用了几个字节。emoji表情是4个字节,而MySQL的utf8编码最多支持3个字节,所以插入会出错。

检查MySQL Server版本

utf8mb4 支持需要MySQL Server v5.5.3+

解决办法:

修改数据库字符集

ALTER 

修改表的字符集

ALTER 

修改字段的字符集

ALTER 

以上操作完毕最好再看下代码中数据库连接的地方如何设置的编码

bcba87714e62454a521e6de07ffae1d2.png

我遇到的问题,到这里已经解决了.

想了解更多的内容看,原文出处:

让 MySQL 支持 emoji 表情符号存储​www.hi-linux.com
c2739d9b722d22d3e840b89ac6788aaf.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值