MySQL保存emoji

emoji是iso和Mac OS系统特有的一系列“表情符号”在微博+ios设备泛滥的今天,很多人的微博中都会嵌入类似的表情符号。
不同于传统上UTF8字符的3个字节(中文地区的传统),emoji采用了4个字节的编码方式。这一个不算大的改变会导致系统出现类似的报错。
Incorrect string value: ‘xF0x9Fx8Cx9FVi…’ for column ‘nick_name’ at row 1
既然是字符不能识别的报错,只要简单的修改字符集就可以,我的方法是使用了uft8mb4字符集。utf8mb4字符集可以平滑替换原有的utf8,
不过需要注意的是只有MySQL5.1.14版本以上才会支持utf8mb4,而且是server 和client都要在此版本之上方可。对于较旧版本的用户支持emoji,
我的建议是先升级版本吧。
首先修改my.ini
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
重启MySQL使配置生效,其实可以完全通过set names的方式实现这个调整,我这样做的目的是为了不改变代码,平滑过渡。


修改对应字段的编码格式
ALTER TABLE `表名` CHANGE COLUMN `字段名` `字段名` 类型(长度) CHARACTER SET utf8mb4 

比如:
ALTER TABLE `test`.`test1` CHANGE COLUMN `name` `name` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL;


建议只是个别字段开通,全表开通的方式:
alter table 表名 convert to character set utf8mb4 collate utf8mb4_bin;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值