正在開發的一個遊戲,新手完成的時候總會報錯java
斷點,發現是返回的數據在json_encode的時候報錯了mysql
報錯信息爲:sql
Malformed UTF-8 characters, possibly incorrectly encodeddocker
環境是docker 安裝的 centos7,查了一下,發現本身的docker沒有安裝中文包,因而安裝了中文包,可是數據庫中插入的數據仍是亂碼,因而確認了下數據表的編碼,也沒發現問題數據庫
打點日誌,看看是拿到的數據是亂碼仍是插入數據的時候變成了亂碼,發現日誌中是正常輸出的json
那就是插入的時候變成了亂碼,方向變爲篩查數據表相關,可是,線上的環境沒有問題,我猜想是本地配置的問題,而後查看了下插入的數據,發現有♪這個符號,因而,搜索了一下,找到了解決方案centos
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4 編碼
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
————————————————
版權聲明:本文爲CSDN博主「小夥子wp」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/w286567...centos7
設置了上面的東西以後,數據庫插入正常,json_encode 也不報錯了,問題解決.net
有時候,困難的不是解決問題,而是定位問題,因此,在一個方向得不到解決方案的時候,要大膽的猜想,多從幾個方向入手,很快就能找到緣由