十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
亂碼一直是困擾PHP初學(xué)者的一個(gè)非常大的問(wèn)題,現(xiàn)在總結(jié)下造成亂碼的原因及解決方法:
創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)榆樹(shù),10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
一、HTML頁(yè)面編碼:meta http-equiv=content-type content=text/html; charset=utf-8 這里的編碼要和數(shù)據(jù)庫(kù)編碼,及連接數(shù)據(jù)庫(kù)編碼;
二、文件在存儲(chǔ)編碼:比如文件inde.php,改變其存儲(chǔ)編碼為所需編碼。只需用EditPlus等文本編輯軟件 文件另存為,在編碼中選擇正確的編碼(這點(diǎn)很多人都會(huì)忽略);
三、數(shù)據(jù)庫(kù)編碼:比如用的是phpmyadmin 選擇數(shù)據(jù)庫(kù)后,選擇操作選項(xiàng)。下面有一個(gè)整理,這里面也要設(shè)置成統(tǒng)一的編碼;
四、表編碼:操作和第三點(diǎn)類似。這里就不重復(fù)了;
五、字段編碼:在建表的建字段的時(shí)候,有個(gè)整理。如果內(nèi)容有漢字,就一定要改成統(tǒng)一的編碼;
六、連接數(shù)據(jù)庫(kù)時(shí)mysql_select_db()后面,要加一句 mysql_query( set names utf8 );
七、 (剛遇到的)本地測(cè)試成功后的網(wǎng)站,傳到網(wǎng)上去,會(huì)有亂碼。可能會(huì)是在本地導(dǎo)出數(shù)據(jù)時(shí)沒(méi)有選擇正確的編碼,所以才會(huì)在導(dǎo)入到web上后有亂碼問(wèn)題。
php數(shù)據(jù)庫(kù)中文亂碼的解決辦法:1、創(chuàng)建數(shù)據(jù)庫(kù)時(shí),規(guī)定字符類型為uft8;2、創(chuàng)建表時(shí),規(guī)定字符類型為utf8;3、在PHP的MySQL連接函數(shù)中,添加語(yǔ)句“mysql_query("set names 'utf8'")。
是你的頁(yè)面
編碼
有問(wèn)題!
你這個(gè)是不是
還沒(méi)有用到
數(shù)據(jù)庫(kù)
啊?
那應(yīng)該就是
你的
IE瀏覽器的
編碼
跟你
頁(yè)面的編碼不統(tǒng)一!
你應(yīng)該先判斷你的
頁(yè)面是
什么編碼
然后再把
IE的編碼換成
你的頁(yè)面
編碼!那就可以了!
一般來(lái)說(shuō)出于編碼兼容考慮大多的頁(yè)面都將頁(yè)面字符集定義為utf-8,meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /,這時(shí)候要正常顯示中文需要轉(zhuǎn)化一下編碼方式,比如:echo iconv("GB2312","UTF-8",'中文');就不會(huì)亂碼了
還有其他方法,比如在php的echo前面加入header("ContentType:text/html;charset=gb2312");當(dāng)然簡(jiǎn)體中文頁(yè)面也可以干脆地,把meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /中的UTF-8改成gb2312。
這個(gè)可能是你在安裝環(huán)境的時(shí)候出現(xiàn)了問(wèn)題,在安裝mysql的時(shí)候,數(shù)據(jù)庫(kù)默認(rèn)的不是gb2312,是西歐字符,建議你重新安裝數(shù)據(jù)庫(kù),或是使用wampsever集成安裝環(huán)境,默認(rèn)數(shù)據(jù)庫(kù)是utf8的,只要你建的數(shù)據(jù)庫(kù)整理為utf8
網(wǎng)頁(yè)文件也保存為utf8的
(不要bom頭的那種)以后寫(xiě)php就很少出現(xiàn)問(wèn)題啦。要是在php文件的最上面一行再加上這么一句代碼,?php
header("Content-Type:text/html;
charset=utf-8");?,那出現(xiàn)問(wèn)題的幾率就更小了。
解決php中中文亂碼問(wèn)題方法
php文件本身的編碼與網(wǎng)頁(yè)的編碼應(yīng)匹配
a. 如果欲使用gb2312編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=gb2312"),靜態(tài)頁(yè)面添加meta?http-equiv="Content-Type" content="text/html; charset=gb2312",所有文件的編碼格式為ANSI,可用記事本打開(kāi),另存為選擇編碼為ANSI,覆蓋源文件。
b. 如果欲使用utf-8編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=utf-8"),靜態(tài)頁(yè)面添加meta?http-equiv="Content-Type" content="text/html; charset=utf-8",所有文件的編碼格式為utf-8。保存為utf-8可能會(huì)有點(diǎn)麻煩,一般utf-8文件開(kāi)頭會(huì)有BOM,如果使用session就會(huì)出問(wèn)題,可用editplus來(lái)保存,在editplus中,工具-參數(shù)選擇-文件-UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。
php本身不是Unicode的,所有substr之類的函數(shù)得改成mb_substr(需要裝mbstring擴(kuò)展);或者用iconv轉(zhuǎn)碼。
如果你的HTML文件文件出現(xiàn)了亂碼問(wèn)題,那么你可以在head標(biāo)簽里面加入U(xiǎn)TF8編碼(國(guó)際化編碼):UTF-8是沒(méi)有國(guó)家的編碼,也就是獨(dú)立于任何一種語(yǔ)言,任何語(yǔ)言都可以使用的。
擴(kuò)展資料:
解決PHP 輸出簡(jiǎn)單的中文 亂碼問(wèn)題的其他方法:
在php的echo前面加入header("Content-Type:text/html;charset=gb2312")
把meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /中的UTF-8改成gb2312
參考資料:
百度百科-PHP