Mysql解决微信特殊符号暱称入库报错乱码

Mysql解决微信特殊符号暱称入库报错乱码

环境声明

Mysql5.7

思考乱码原因

  1. 自己代码和微信编码不统一
  2. 自己代码传输到数据库序列化,到数据库反序列化编码不统一
  3. 数据库接受到数据库后存入数据库乱码(数据库反序列化和数据库编码级不统一)

怎么解决

解决乱码唯一手段,保证编码统一

解决自己代码和微信编码统一

保证代码操作序列化微信返回参数和微信编码统一(默认utf-8),这部分问题,可以通过断点,日志轻松排查出来

解决代码传输到数据库,序列化反序列化问题

  1. 设置mysql 连接url 千万带 characterEncoding=UTF-8
    • 错误例子:

            datasource:
              master:
                url: jdbc:mysql://XX/demo-database?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false
      
    • 原因: 特殊表情需要utf8mb4,你这样设置会让数据库客户端代码,认可是utf-8,入库特殊符号就会乱码

  2. 如果url连接不设置默认的序列化类型,那具体序列化应该用那个类型,这个我们可以在数据库设置
    1. 打开数据库 vim /etc/my.conf, 添加如下内容

      # 设置客户端序列化默认编码级
      [client]
      default-character-set = utf8mb4
      # 设置mysql默认编码级
      [mysql]
      default-character-set = utf8mb4
      
      [mysqld]
      character-set-client-handshake = FALSE
      character-set-server = utf8mb4
      collation-server = utf8mb4_unicode_ci
      init_connect='SET NAMES utf8mb4'
      
    注意: 设置完记得重启数据库systemctl restart mysqld,根据自己安装类型,重启,指令只是在centos7,yum安装mysql重启方法

解决数据库编码级

新建数据库保证数据库编码级是 utf8mb4
通过以上手段,保证数据编码一致,可以解决微信特殊符号暱称乱码问题

上图,我这边实现的效果

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章