如何解決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數(shù)據(jù)庫mysql: [ERROR] unknown option ''--skip-grant-tables'
這篇文章主要介紹了mysql數(shù)據(jù)庫mysql: [ERROR] unknown option '--skip-grant-tables',需要的朋友可以參考下2020-03-03Mysql設(shè)置主鍵自動增長起始值的方案總結(jié)
在MySQL?中,當主鍵定義為自增長后,這個主鍵的值就不再需要用戶輸入數(shù)據(jù)了,而由數(shù)據(jù)庫系統(tǒng)根據(jù)定義自動賦值,下面這篇文章主要給大家介紹了關(guān)于Mysql設(shè)置主鍵自動增長起始值的相關(guān)資料,需要的朋友可以參考下2022-09-09