解决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 配置去掉,之后重新授权并保存带表情的微信昵称就没问题啦。

你可能感兴趣的:(mysql)