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
通過以上手段,保證數據編碼一致,可以解決微信特殊符號暱稱亂碼問題

上圖,我這邊實現的效果

在這裏插入圖片描述

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