一、問題
開發中遇到將其它數據庫數據插入到mysql數據庫表中一直會報類似如下錯誤:
Incorrect string value: '/xE6/x88/x91' for column 'name' at row 1

二、分析
1.我先去查了兩個數據庫表中此字段對應的類型都是 varchar,所以不存在類型不一致導致插入報錯的問題。
2. 排除字段類型不一致導致的錯誤后,我猜測是中文亂碼問題,然后插入純英文數據發現沒有報錯,所以確定了是中文亂碼問題。然后網上百度發現是mysql默認的編碼問題導致的中文亂碼。
三、解決方案
1. 檢查本地mysql安裝文件目錄下的my.ini配置文件,服務器和客戶端的默認編碼方式是否是utf8
| [mysqld]# 服務端使用的字符集默認為UTF8character-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; | 
在我們平時使用mysql的過程中,經常會碰到中文亂碼的情況,根據平時的工作經驗我總結歸納了以下四個需要注意的地方:
新聞熱點
疑難解答