解决Mysql存储微信表情时候的报错问题

前些天在做微信授权获取到用户昵称往mysql数据库保存的时候出现了数据库异常,经过多方排查最后发现其根本原因是微信表情符号为4个字节的UTF-8编码。因此解决方案就是修改mysql数据库编码为utf8mb4,需要注意的是mysql 5.5以下的版本不支持。

具体修改数据库编码的方法如下:

  window下(my.ini)

  [mysql]

  default-character-set=utf8mb4

  [mysqld]

  character-set-server=utf8mb4

  collation-server=utf8mb4_bin

  linux下(my.cnf)

  [client]

  default-character-set = utf8mb4

  [mysql]

  default-character-set = utf8mb4

  [mysqld]

  character-set-server = utf8mb4

  collation-server = utf8mb4_unicode_ci

重点:

仅仅修改完数据库编码还不好使,接下来还需要将具体涉及到的表存储字段类型编码更改为utf8mb4,命令如下:

alter table test_user modify column username varchar(255) character set utf8mb4 collate utf8mb4_unicode_ci comment '用户名'; 

最后,如果在java web项目中配置了数据库连接信息或者在tomcat中配置了数据库连接池信息的话还需要将characterEncoding=UTF-8 配置去掉,之后重新授权并保存带表情的微信昵称就没问题啦。

猜你喜欢

转载自qiangjiyi.iteye.com/blog/2342574