最近开发遇到当Mysql存储微信昵称,而微信昵称有emoji表情符号时,数据库存储数据出现乱码。原因是mysql支持的utf8编码最大长度为3字节,如果遇4字节的宽字符(emoji表情符号、不常用的汉字、新增的Unicode字符等)就会插入异常。
Mysql在5.5.3之后增加utf8mb4(most bytes 4)编码,专门用于兼容四字节的unicode,一般情况。为了节省空间,使用utf8即可,但是建议使用utf8mb4。
Linux下更改mysql编码方式
使用Linux的发行版本为Centos
首先查看mysql版本,是否支持utf8mb4(5.5.3版本及以上)。
查看版本简易方法:
终端下:mysql -V
mysql下:status; 或 select version();
修改mysql配置文件
修改my.conf(windows下为my.ini)
修改前后的配置文件及系统编码分别如下:
修改前编码:
修改前配置文件:
修改后的编码:
修改后的配置文件:
修改database、table及column的字符集
|
|
重启mysql
|
|
若更新sql,指定编码方式为utf8mb4
|
|