數(shù)據(jù)庫采用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產(chǎn)生亂碼的原因。這時候在PHP腳本里面直接SELECT數(shù)據(jù)出來的就是亂碼,需要在查詢前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");來設定MYSQL連接編碼,保證頁面申明編碼與這里設定的連接編碼一致(GBK是GB2312的擴展)。如果頁面是UTF-8編碼的話,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與數(shù)據(jù)庫內(nèi)部編碼一致可以不設定連接編碼。
從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站制作、網(wǎng)站建設、網(wǎng)站策劃、網(wǎng)頁設計、域名申請、網(wǎng)站空間、網(wǎng)絡營銷、VI設計、 網(wǎng)站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。
事實上MYSQL配置文件my.ini中定義了2個默認編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來分別設定默認時候客戶端連接和數(shù)據(jù)庫內(nèi)部所采用的編碼。上面指定的編碼其實是MYSQL客戶端連接服務器時候的命令行參數(shù)character_set_client,來告訴MYSQL服務器接受到的客戶端數(shù)據(jù)是什么編碼的,而不是采用默認編碼。
轉(zhuǎn)自:
其實,只要注意文件編寫的時候編碼、數(shù)據(jù)庫的編碼一般就不會有這個問題的,但是,比如你用DW(dwcs4貌似沒有這個現(xiàn)象)打開文件,它會以默認的編碼讀取,一旦你保存了,那就完了,用EditPlus打開之后,右下角有編碼提示,如果發(fā)現(xiàn)不對,另存為,覆蓋一下,就可以了
這個可能是你在安裝環(huán)境的時候出現(xiàn)了問題,在安裝mysql的時候,數(shù)據(jù)庫默認的不是gb2312,是西歐字符,建議你重新安裝數(shù)據(jù)庫,或是使用wampsever集成安裝環(huán)境,默認數(shù)據(jù)庫是utf8的,只要你建的數(shù)據(jù)庫整理為utf8
網(wǎng)頁文件也保存為utf8的
(不要bom頭的那種)以后寫php就很少出現(xiàn)問題啦。要是在php文件的最上面一行再加上這么一句代碼,?php
header("Content-Type:text/html;
charset=utf-8");?,那出現(xiàn)問題的幾率就更小了。
$link = mysql_connect('主機名或IP地址', '數(shù)據(jù)庫用戶名', '密碼') or die("Could not connect: " . mysql_error());
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");
mysql_select_db('你要連接的數(shù)據(jù)庫名', $this-link);
我是做對日外包的,你再連接數(shù)據(jù)的時候,把上面一些的代碼放進去試試,應該可以的。
而且你得保證你的php文件編碼格式是utf8,可以用utral32編輯
數(shù)據(jù)載入的時候是亂碼還是正常,是從別人機器上導出數(shù)據(jù)自己恢復的嗎?
查看下數(shù)據(jù)庫的字符集編碼,show
vaiables
like
'%char%'
查看下字符集
使用下latin1
因為他是默認的
,不行就把數(shù)據(jù)庫刪了重新建立在導入數(shù)據(jù)
打算切換某個網(wǎng)站的主機,沒想到遇到Php和Mysql中文亂碼的問題。
以前的國外主機用的Mysql是4.x系列的,感覺還比較好,都無論GBK和UTF-8都沒有亂碼,沒想到新的主機的Mysql是5.0版本的,導入數(shù)據(jù)后,用Php讀出來全是問號,亂碼一片,記得我以前也曾經(jīng)有過一次切換出現(xiàn)亂碼的經(jīng)驗,原因肯定是Mysql版本之間的差異問題。
只好查資料,發(fā)現(xiàn)了一個解決方法,就是在mysql_connect后面加一句SET
NAMES
UTF8,即可使得UTF8的數(shù)據(jù)庫消除亂碼,對于GBK的數(shù)據(jù)庫則使用SET
NAMES
GBK,代碼如下:
$mysql_mylink
=
mysql_connect($mysql_host,
$mysql_user,
$mysql_pass);
mysql_query("SET
NAMES
'GBK'");
以上就是小編為大家?guī)淼腜HP讀MYSQL中文亂碼的快速解決方法的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
網(wǎng)站題目:php讀取數(shù)據(jù)庫消息亂碼 php讀取數(shù)據(jù)庫消息亂碼了
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article20/dosddco.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、App開發(fā)、服務器托管、網(wǎng)站排名、網(wǎng)站改版、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)