sql中插入中文問題

可能有些人會報下面錯誤

1.SQLException: Incorrect string value: xE5xB8x8CxE8xB4x9D... for column XXXXX at row 1

這是由於編碼不統一造成的,查看編碼情況:show variables like character%;

其中character_set_server修改之後 (set character_set_server = utf8;)重啟失效,但是它並沒有影響最後中文的輸出,也就不需修改

修改資料庫編碼格式:alter database 資料庫名 CHARACTER SET utf8 COLLATE utf8_general_ci;

2插入的中文都顯示成了問號

修改表編碼格式:ALTER TABLE 表名DEFAULT CHARACTER SET utf8;

***修改欄位編碼格式,查了很久,之前一直無法更改正確,請大家注意修改了表的編碼之後欄位編碼不會因為表的編碼格式修改而變化,它仍然還是以前的Latin1,用Navicat驗證一下可以看到(右鍵student表,設計表),所以說只修改表的編碼格式是然並卵。

修改欄位編碼格式:ALTER TABLE 表名 CHANGE `欄位名1` `欄位名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL; (轉換個別欄位,但是感覺有點慢)

alter table 表名 convert to character set utf8; (轉換全部欄位)

於是將資料庫中所有編碼都修改成utf-8,以便統一為可以識別中文的編碼,默認的Latin1不識別中文,並且注意下次新建資料庫表和欄位的時候就直接設置character為utf-8,養成良好的習慣

PS:網上很多人處理編碼問題通過修改my.ini文件,由於我更改後沒有生效,後續還需要再研究如果有懂得希望可以進行指導,但是發現修改my.ini後需要關掉mysql後重新啟動才會生效,我在更改my.ini文件後net stop mysql,有start 發現報錯無法重啟,原來是文件修改錯誤的原因。這裡寫出來提醒下大家

推薦閱讀:

為什麼MySQL在innodb引擎中即使使用了MVCC機制仍然會出現丟失更新?
mysql pid文件是什麼用途?
一個MySQL 5.7 分區表性能下降的案例分析
MySQL鎖總結
怎樣在 MySQL 表中存儲樹形結構數據?

TAG:MySQL | SQL | 資料庫 |