處理mysql編碼問題
我們經(jīng)常會(huì)遇到一些向MySQL數(shù)據(jù)庫中插入中文,但是select出來的時(shí)候,卻是亂碼。
一、查看庫、表字符集命令
1.查看數(shù)據(jù)庫支持的所有字符集
Show ?character set?(show char set)
2.查看當(dāng)前狀態(tài),里面當(dāng)然包括字符集的設(shè)置
Status(/s)
3.查看系統(tǒng)字符集設(shè)置,包括所有的字符集設(shè)置
Show? variables?like? ‘%char%’;
4.查看數(shù)據(jù)表中字符集設(shè)置
Show? full?columns? from? tablename ;
也可以查看表結(jié)構(gòu)
Show? create?table? tablename\G;
5.查看數(shù)據(jù)庫編碼(數(shù)據(jù)庫結(jié)構(gòu))
Show? create?database? dbname;//創(chuàng)建數(shù)據(jù)庫指定的字符集
二、創(chuàng)建庫表列時(shí)要指定字符集(要統(tǒng)一)
1、服務(wù)器級(jí)
在安裝MySQL時(shí)可以設(shè)置服務(wù)器的默認(rèn)編碼格式,也可對(duì)my.ini做修改,修改[mysqld]里面的character_set_server=utf8,則可設(shè)置character_set_server的值。
2.數(shù)據(jù)庫級(jí)
Create? database?? dbname?default? character? set?utf8;
注意,如果不指定默認(rèn)的字符集,則系統(tǒng)會(huì)根據(jù)character_set_database的值進(jìn)行設(shè)置
3.表級(jí)
Create? table?dbname.tbname(id varchar(20) not null, name vharchar(20))engine=innoDB? default? charset=utf8;
注:定義表的默認(rèn)字符集為utf8,即使character_set_database為gbk,但是表的列都為utf8。如果沒有定義表的默認(rèn)字符集,則他會(huì)按照character_set_database的值來設(shè)置
4.列級(jí)
Create? table?db1.tb2(id? varchar(20)? not?null, name? varchar(20)? character?set utf8);
注:如查沒有指定列字符集、就使用表字符集、如查指定了就使用指定的。
圖中:show? create?table db1.tb2//是查看表結(jié)構(gòu)
三、修改字符集
1.修改character_set_connection、character_set_client、character_set_results三值
對(duì)于一個(gè)連接來說、可以用
Set?names? utf8來使用上面三個(gè)值改成utf8;
Set?name? ‘charset_name’;相當(dāng)于
Set?character_set_client = charset_name;
SET character_set_results = charset_name;?
SET character_set_connection = charset_name;
2.修改character_set_database字段(也就是改數(shù)據(jù)庫字符集)
Alter? database?db_name? default? character?set? charset_name;
3.修改character_set_server字段
最簡(jiǎn)單的方法是直接改my.ini配置文件里面[mysqld]的字段,增加character-set-server=gbk,然后重啟mysqld,則可改為你想要的字符集。
4.修改表的字符集
Alter? table?tbname? default? character?set? charsetname;
Alter? table?tb1? default? character?set? utf8
5.修改列的字符集
Alter? table?tbname? modify? age?varchar(30)? character? set?utf8;
總結(jié):
1、建庫、建表、建字段設(shè)置統(tǒng)一編碼。
2、PHP作為mysqle服務(wù)器客戶端、連接編碼set names utf8/gbk;
3、設(shè)置php返回給瀏覽器數(shù)據(jù)的編碼。(Content-Type,header(),<meta>)
<metahttp-equiv="Content-Type"content="text/html; charset=gb2312" />
header("Content-type:text/html;charset=utf-8");
4、Php文件本身保存的編碼(文件編碼、通過文本編輯器設(shè)置)
5、安裝mysql時(shí)設(shè)置好編碼。(裝好后可修改my.ini)
微信掃一掃?、關(guān)注公眾號(hào)
不定時(shí)分享資料視頻
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文名稱:Mysql(三)Mysql編碼問題-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://jinyejixie.com/article14/dpssge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、電子商務(wù)、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容