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;

你可能感兴趣的:(MySQL保存emoji)