mysql中插入表數據中文亂碼問題的解決方法

一、問題

開發中遇到將其它數據庫數據插入到mysql數據庫表中一直會報類似如下錯誤:

Incorrect string value: ‘\xE6\x88\x91’ for column ‘name’ at row 1
在這裏插入圖片描述

二、分析

  1. 我先去查了兩個數據庫表中此字段對應的類型都是 varchar,所以不存在類型不一致導致插入報錯的問題。

  2. 排除字段類型不一致導致的錯誤後,我猜測是中文亂碼問題,然後插入純英文數據發現沒有報錯,所以確定了是中文亂碼問題。然後網上百度發現是mysql默認的編碼問題導致的中文亂碼。

三、解決方案

  1. 檢查本地mysql安裝文件目錄下的my.ini配置文件,服務器和客戶端的默認編碼方式是否是utf8

複製代碼
[mysqld]

服務端使用的字符集默認爲UTF8

character-set-server=utf8

[client]

設置mysql客戶端連接服務端時默認使用的端口

default-character-set=utf8
複製代碼
2. 上一步無誤後,打開命令行,輸入:net start mysql ,啓動mysql服務;

顯示「服務已經成功啓動」之後,輸入命令「mysql」,使用數據庫;

在這裏插入圖片描述
查看數據庫表的字符集編碼格式:輸入命令 「 show create table test.xtt_test_copy; 」;
在這裏插入圖片描述

如上圖所示,發現默認是"latin1"並不是「utf8」,需要繼續手動修改,輸入命令 「 ALTER TABLE test.xtt_test_copy CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;」,繼續輸入命令 「 show create table test.xtt_test_copy; 」查看默認數據庫表的字符集編碼改爲了「utf8」;
在這裏插入圖片描述
查看數據庫的字符集編碼格式:輸入命令 「 show creat database test; 」;
在這裏插入圖片描述
如上圖所示,發現默認,是"latin1"並不是「utf8」,需要繼續手動修改,輸入命令 「 ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;」,繼續輸入命令 「SHOW CREATE database test; 」 ,查看默認數據庫表的字符集編碼改爲了「utf8」;
在這裏插入圖片描述
3. 最後,重啓服務就可以了 ~

mysql> net stop mysql; mysql> net start mysql;