1. 程式人生 > >ERROR 1366 (HY000): Incorrect string value-解決方案

ERROR 1366 (HY000): Incorrect string value-解決方案

遇到的問題
在cmd中插入資料的時候報錯

mysql> insert into category(cid,cname) values('c005','家電');
ERROR 1366 (HY000): Incorrect string value: '\xBC\xD2\xB5\xE7' for column 'cname' at row 1

是因為配置檔案中設定的編碼方式和客戶端設定的編碼方式不匹配造成的。

在cmd中輸入show variables like 'character%';
這裡寫圖片描述
這裡是設定的是utf8。

右鍵點選cmd的標題欄,屬性,選項,可以看到當前內碼表的格式為GBK。
這裡寫圖片描述

一種方案是把cmd的編碼格式變成utf8。
輸入CHCP 65001,然後,標題欄右鍵,屬性,字型,選擇Lucida Console。但是設定完之後,不能輸入中文了。
輸入chcp 936,改回原來的gbk。

第二種方案,修改配置檔案,在MySQL的安裝目錄下找到my.ini這個配置檔案,找到裡邊的default-character-set,把他的值改為gbk。
可以看到上面有一段註釋

# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section.

大概意思是,這些設定只對MySQL提供的客戶端(也就是cmd中用的那個)管用。
設定完之後,重啟一下MySQL。再次輸入show variables like 'character%';,可以看到

這裡寫圖片描述

之後再做插入操作的時候就不會有亂碼問題了。

可以發現用Navicat就沒有這個問題,因為Navicat這個客戶端用的就是utf8編碼,而不是gbk。