MySQL保存emoji

emoji是iso和Mac OS系统特有的一系列“表情符号”在微博+ios设备泛滥的今天,很多人的微博中都会嵌入类似的表情符号。不同于传统上UTF8字符的3个字节(中文地区的传统),emoji采用了4个字节的编码方式。这一个不算大的改变会导致系统出现类似的报错。

Incorrect string value: ‘\xF0\x9F\x8C\x9FVi…’ 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
算起来Litrin在生产环境中
上次提到过Coreseek的安

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据