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