欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2024/1/8 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Mysql解决微信特殊符号昵称入库报错乱码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

目录:

  • Mysql解决微信特殊符号昵称入库报错乱码
    • 环境声明
    • 思考乱码原因
    • 怎么解决
      • 解决自己代码和微信编码统一
      • 解决代码传输到数据库,序列化反序列化问题
      • 解决数据库编码级
      • 上图,我这边实现的效果

环境声明

Mysql5.7

思考乱码原因

  • 自己代码和微信编码不统一
  • 自己代码传输到数据库序列化,到数据库反序列化编码不统一
  • 数据库接受到数据库后存入数据库乱码(数据库反序列化和数据库编码级不统一)
  • 怎么解决

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

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

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

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

  • 设置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,入库特殊符号就会乱码

  • 如果url连接不设置默认的序列化类型,那具体序列化应该用那个类型,这个我们可以在数据库设置
  • 打开数据库 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
    通过以上手段,保证数据编码一致,可以解决微信特殊符号昵称乱码问题

    上图,我这边实现的效果

    总结

    以上是生活随笔为你收集整理的Mysql解决微信特殊符号昵称入库报错乱码的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。