之前我也遇到这样的问题,具体原因是因为emoji表情大小为四个字节,但一般的utf8编码下的mysql只能存储2到3个字节,具体的解决办法是把要存储的emoji表情的那个字段类型改为longtext,要是不行把utf8编码改为utf8mb4
成都创新互联公司是专业的包头网站建设公司,包头接单;提供网站设计、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行包头网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
我当时好像就是这么解决的,你试试
emoji表情 是四字节的需要utf-8mb4来存储,mysql5.6以上才支持utf-8mb4
通过上文我们已经知道一种解决办法了,但有一个硬性条件就是你的数据库版本。当你的数据库版本没有达到5.5.3怎么办呢…总结一下,mysql支持存储emoji表情的方法,至少有两种。1.修改数据库编码为utf8mb4,前提是你的mysql数据库版本必须得是5.5.3及以后的2.将带emoji的文本转为base64来进行存储,返回时进行相应解码返回
从
mysql
5.5.3
开始,mysql
支持一种
utf8mb4
的字符集,这个字符集能够支持
4
字节的
utf8
编码的字符。
utf8mb4
字符集能够完美地向下兼容
utf8
字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用
3
个字节,在存入一个
unified
emoji
表情的时候,它会自动占用
4
个字节。所以在输入输出时都不会存在乱码的问题了。由于
utf8mb4
是
utf8
的超集,从
utf8
升级到
utf8mb4
不会有任何问题,直接升级即可;如果从别的字符集如
gb2312
或者
gbk
转化而来,一定要先备份数据库。然后,修改
mysql
的配置文件
/etc/my.cnf,修改连接默认字符集为
utf8mb4
,然后在连接数据库以后首先执行一句
sql:
set
names
utf8mb4;。
1.
修改my.cnf
或
my.ini
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改后重启mysql
登陆mysql,
show
variables
like
'character%';
可以查看编码是否已经修改成功。
2、修改数据库和数据表为相应的
utf8mb4
格式。
alter
table
table_name
convert
to
character
set
utf8mb4
collate
utf8mb4_bin;
3、在代码中,连接数据库成功后,执行
"set
names
utf8mb4"
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款