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

1、問題mysql

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

Incorrect string value: '\xE6\x88\x91' for column 'name' at row 1

 

2、分析數據庫

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

2. 排除字段類型不一致致使的錯誤後,我猜想是中文亂碼問題,而後插入純英文數據發現沒有報錯,因此肯定了是中文亂碼問題。而後網上百度發現是mysql默認的編碼問題致使的中文亂碼。編碼

 

3、解決方案spa

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

[mysqld]
# 服務端使用的字符集默認爲UTF8
character-set-server=utf8

[client]
# 設置mysql客戶端鏈接服務端時默認使用的端口
default-character-set=utf8

2. 上一步無誤後,打開命令行,輸入:net start mysql ,啓動mysql服務;3d

  • 顯示「服務已經成功啓動」以後,輸入命令「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. 最後,重啓服務就能夠了 ~code

mysql> net stop mysql;
mysql> net start mysql;
相關文章
相關標籤/搜索