MYSQL中文亂碼問題的解決方案
一、亂碼的原因:
1、 client客戶端的編碼不是utf8
2、server端的編碼不是utf8
3、database數(shù)據(jù)庫(kù)的編碼不是utf8
4、數(shù)據(jù)庫(kù)的表的編碼不是utf8
5、表中的列字段編碼不是utf8
主要的原因在于前三個(gè)偏多。
二、查看數(shù)據(jù)庫(kù)的編碼方式
mysql>show variables like ‘character%';
此截圖是解決之后的,查看哪個(gè)不是和上面一樣。
三、解決的辦法有倆種:
1、對(duì)/etc/mysql/my.cnf 配置文件進(jìn)行修改
[mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
2、由mysql -uroot -p命令進(jìn)入mysql,輸入以下設(shè)置
SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8;
針對(duì)在客戶端輸入:數(shù)據(jù)庫(kù)、表、列字段設(shè)置
alter database <數(shù)據(jù)庫(kù)名> character set utf8;
alter table <表名> character set utf8;
alter table <表名> modify <字段名> character set utf8;
注意:設(shè)置之后記得重啟,輸入命令:service mysql restart
四、本人在項(xiàng)目遇到亂碼問題是以下方法解決的
出現(xiàn)問題的形式:項(xiàng)目的服務(wù)器向數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí),表中的數(shù)據(jù)中文為亂碼。
解決方法:對(duì)封裝的數(shù)據(jù)庫(kù)操作類中,建立連接數(shù)據(jù)庫(kù)時(shí),設(shè)置字符集utf8
//建立連接后, 自動(dòng)調(diào)用設(shè)置字符集語(yǔ)句,_dbConf._charset = utf8 if(!_dbConf._charset.empty()) { if (mysql_options(_pstMql, MYSQL_SET_CHARSET_NAME, _dbConf._charset.c_str())) { throw MysqlHelper_Exception(string("MysqlHelper::connect: mysql_options MYSQL_SET_CHARSET_NAME ") + _dbConf._charset + ":" + string(mysql_error(_pstMql))); } }
完美解決向數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí)中文亂碼問題。
總結(jié)
到此這篇關(guān)于MYSQL中文亂碼問題解決的文章就介紹到這了,更多相關(guān)MYSQL中文亂碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 數(shù)據(jù)庫(kù)備份的多種實(shí)現(xiàn)方式總結(jié)
這篇文章主要介紹了mysql 數(shù)據(jù)庫(kù)備份的多種實(shí)現(xiàn)方式,總結(jié)分析了MySQL數(shù)據(jù)庫(kù)備份的常見語(yǔ)句、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02MySQL觸發(fā)器自動(dòng)智能化的數(shù)據(jù)維護(hù)
這篇文章主要介紹了MySQL觸發(fā)器自動(dòng)智能化的數(shù)據(jù)維護(hù),觸發(fā)器,就是一種特殊的存儲(chǔ)過程。觸發(fā)器和存儲(chǔ)過程一樣是一個(gè)能夠完成特定功能、存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的SQL片段2022-07-07