如何解決mysql表輸入中文出現(xiàn)問號的問題
分析
Incorrect string value: ‘\xE7\xA8\x8B\xE5\xBA\x8F…’ for column ‘course’ at row 1
數(shù)據(jù)庫的編碼格式為latin1
原因:
不支持中文,比如設(shè)置的latin字符,或者編碼解碼不一致問題,比如客戶端用uf8,服務(wù)器用latin等
解決:
統(tǒng)一設(shè)置為utf-8格式即可
- 1.需要改配置文件,以后創(chuàng)建數(shù)據(jù)庫自動utf-8
- 2.對使用的數(shù)據(jù)庫,表,表中的列重新設(shè)置編碼格式為utf-8
修改配置文件
在mysql目錄下找到myini文件

如果文件再c盤,復(fù)制出來到桌面修改,否則c盤保護不讓修改,修改后再替換即可
修改的有兩處,客戶端編碼,服務(wù)器編碼


(注:collation是排序方式)
然后重啟服務(wù)器即可,在管理員的cmd中輸入如下指令

查看修改后的mysql編碼格式

我已經(jīng)修改過了,這是修改后的
修改數(shù)據(jù)庫編碼,表編碼,表中的列編碼
1.先查詢數(shù)據(jù)庫編碼格式

如果不是utf8,可以使用如下命令修改
ALTER DATABASE 數(shù)據(jù)庫 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
或者

2.表編碼格式修改
查詢表的編碼格式
show create table tablename(數(shù)據(jù)庫名.表名);

可以看出表編碼格式為utf8,列編碼為latin1,列不支持中文
如果表編碼不是utf8,可以如下修改
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE …]
(注:此句把表默認的字符集和所有字符列(CHAR,VARCHAR,TEXT)改為新的字符集:)
比如
ALTER TABLE web_user.user CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

再查詢?nèi)缦拢?/p>

latin消失了,支持中文,而且全部編碼一致
若修改某字段的字符集
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE …];
如:
ALTER TABLE web_user.user CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
如果還是不成功,刪了重建數(shù)據(jù)表可以考慮
附:
若只修改表格默認的字符集
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE…];
如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
查看字段編碼:
SHOW FULL COLUMNS FROM tbl_name;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談MySQL 統(tǒng)計行數(shù)的 count
這篇文章主要介紹了MySQL 統(tǒng)計行數(shù)的 count的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-07-07
MySQL數(shù)據(jù)庫可以用任意ip連接訪問的方法
本文主要介紹了MySQL數(shù)據(jù)庫可以用任意ip連接訪問的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
MySQL數(shù)據(jù)庫觸發(fā)器從小白到精通
觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),比如當對一個表進行操作時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等2022-03-03

