之前公司的项目中一直使用的mysql版本(5.1.73),使用utf8字符集,基本上没有什么问题的;
现在开始做一些手机客户端之类的项目,发送表情(emoji)的时候会报错“ ‘\xF0\x9F\x98\xB1’ for column ‘body’ at row 1”;
Google了一把,原因是因为表情存储需要4个字节,但是mysql的utf8字符集编码只支持1-3个字节,存储空间不够就报错了,因此需要升级一下字符集。
MYSQL 5.5.3之后的版本支持UTF8MB4字符集,一个字符最多能有4字节,此字符集也是完全兼容utf8的,不存在兼容性问题。
升级完mysql-server之后
修改配置文件
1 | [client] |
修改完这些配置文件后,之后创建的库、表就是utf8mb4格式了,但是之前的收据就需要手动修改一下了
1 | ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; |
重启mysql,查看字符集/etc/init.d/mysqld restart
使用utf8mb4,需注意:
1.mysql-server 版本需要高于5.5.3
2.mysql-connector 版本需要高于5.1.3版本(建议升级到最新版,目前是5.1.39)
参考:
http://www.wangyuxiong.com/blog/mysql-dbzi-fu-ji-sheng-ji-zhi-utf8mb4,24/
https://segmentfault.com/a/1190000000616820