故障碼:
mysql> insert into t1(name,sex,age,address) values('張三','男',11,'沙河'); ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1
該故障是由於中文編碼不一致導致的數據插入失敗所致。
一般mysql數據庫在插入中文信息時出錯的情況無外乎就是中文編碼不一致所致。而目前支持中文的編碼格式基本上有utf-8,gbk,gb2312三種,而數據庫,jsp頁面,控制台,Java代碼等等的地方要盡可能的編碼一致,否則可能會帶來不必要的麻煩。
通過查找,我發現我的數據庫編碼格式是:utf-8,如下所示:
[mysql] default-character-set=utf8該信息在mysql的安裝目錄下的my.ini文件中,以我的為例,就是:C:\Program Files\MySQL\MySQL Server 5.5下的my.ini。
而我們的控制台的編碼格式是:gbk,如下圖所示:
vcq9ysehvr+qyryhvy0mZ3Q7ob7Uy9DQob+jrNTaob7Uy9DQob+0sL/a1tDK5MjrY21ko6y147v3u9iztbz8vLS/yaGjPC9wPgoKPHA+ICAgICAgICDTydPav9jWxsyous1teXNxbLXE1tDOxLHgwusmIzI2Njg0O8q9srvSu9bCo6zV4rW81sLW0M7Eyv2+3c7et6iy5cjrs8m5pqOsveK+9rDst6i+zcrHvavG5LHgwusmIzI2Njg0O8q9vfjQ0M2z0rujrNPJ09q/2NbGzKi1xLHgwusmIzI2Njg0O8q9srvE3L340NDJ6NbDo6zL+dLUztLDx9a709C4/LjEyv2+3b/itcSx4MLrJiMyNjY4NDvKvcHLo6y0y8qxztLDx72ryv2+3b/itcSx4MLrJiMyNjY4NDvKvdKyuMSzyWdia6GjPC9wPgoKPHA+vLSjrL2rbXkuaW5pzsS8/tbQtcR1dGYtOLjEs8lnYmsstPrC68jnz8KjujwvcD4KPHA+PHByZSBjbGFzcz0="brush:sql;">[mysql]
default-character-set=gbk
此時重啟mysql服務器,然後再插入中文數據,運行結果如下所示:
mysql> insert into t1(name,sex,age,address) values('張三','男',11,'沙河'); Query OK, 1 row affected (0.05 sec)