php數(shù)據(jù)庫中文亂碼的解決辦法:1、創(chuàng)建數(shù)據(jù)庫時,規(guī)定字符類型為uft8;2、創(chuàng)建表時,規(guī)定字符類型為utf8;3、在PHP的MySQL連接函數(shù)中,添加語句“mysql_query("set names 'utf8'")。
創(chuàng)新互聯(lián)是一家做網(wǎng)站、網(wǎng)站制作,提供網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,網(wǎng)站制作,建網(wǎng)站,按需求定制制作,網(wǎng)站開發(fā)公司,自2013年創(chuàng)立以來是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項目的網(wǎng)站策劃設(shè)計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。
解決php中中文亂碼問題方法
php文件本身的編碼與網(wǎng)頁的編碼應(yīng)匹配
a. 如果欲使用gb2312編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=gb2312"),靜態(tài)頁面添加meta?http-equiv="Content-Type" content="text/html; charset=gb2312",所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。
b. 如果欲使用utf-8編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=utf-8"),靜態(tài)頁面添加meta?http-equiv="Content-Type" content="text/html; charset=utf-8",所有文件的編碼格式為utf-8。保存為utf-8可能會有點麻煩,一般utf-8文件開頭會有BOM,如果使用session就會出問題,可用editplus來保存,在editplus中,工具-參數(shù)選擇-文件-UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。
php本身不是Unicode的,所有substr之類的函數(shù)得改成mb_substr(需要裝mbstring擴(kuò)展);或者用iconv轉(zhuǎn)碼。
如果你的HTML文件文件出現(xiàn)了亂碼問題,那么你可以在head標(biāo)簽里面加入UTF8編碼(國際化編碼):UTF-8是沒有國家的編碼,也就是獨立于任何一種語言,任何語言都可以使用的。
擴(kuò)展資料:
解決PHP 輸出簡單的中文 亂碼問題的其他方法:
在php的echo前面加入header("Content-Type:text/html;charset=gb2312")
把meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /中的UTF-8改成gb2312
參考資料:
百度百科-PHP
確保三碼合一就可以了..
第一個是數(shù)據(jù)庫的字符集
第二個就是存進(jìn)去的時候字符集
第三個就是顯示的時候的字符集
這三個都有可能造成亂碼;
第一個 舉例是:如果你插入的時候用的是GB2312 ,但你表中的default charset是utf8 那么,就有可能亂碼了.
第二種情況就是你插入正確 但你查詢的時候以UTF8查詢出來,但你在HTML頁面里設(shè)置編碼如果非UTF8那么也有可能造成亂碼.
亂碼一直是困擾PHP初學(xué)者的一個非常大的問題,現(xiàn)在總結(jié)下造成亂碼的原因及解決方法:
一、HTML頁面編碼:meta http-equiv=content-type content=text/html; charset=utf-8 這里的編碼要和數(shù)據(jù)庫編碼,及連接數(shù)據(jù)庫編碼;
二、文件在存儲編碼:比如文件inde.php,改變其存儲編碼為所需編碼。只需用EditPlus等文本編輯軟件 文件另存為,在編碼中選擇正確的編碼(這點很多人都會忽略);
三、數(shù)據(jù)庫編碼:比如用的是phpmyadmin 選擇數(shù)據(jù)庫后,選擇操作選項。下面有一個整理,這里面也要設(shè)置成統(tǒng)一的編碼;
四、表編碼:操作和第三點類似。這里就不重復(fù)了;
五、字段編碼:在建表的建字段的時候,有個整理。如果內(nèi)容有漢字,就一定要改成統(tǒng)一的編碼;
六、連接數(shù)據(jù)庫時mysql_select_db()后面,要加一句 mysql_query( set names utf8 );
七、 (剛遇到的)本地測試成功后的網(wǎng)站,傳到網(wǎng)上去,會有亂碼??赡軙窃诒镜貙?dǎo)出數(shù)據(jù)時沒有選擇正確的編碼,所以才會在導(dǎo)入到web上后有亂碼問題。
數(shù)據(jù)載入的時候是亂碼還是正常,是從別人機(jī)器上導(dǎo)出數(shù)據(jù)自己恢復(fù)的嗎?
查看下數(shù)據(jù)庫的字符集編碼,show
vaiables
like
'%char%'
查看下字符集
使用下latin1
因為他是默認(rèn)的
,不行就把數(shù)據(jù)庫刪了重新建立在導(dǎo)入數(shù)據(jù)
如果你的網(wǎng)頁是GB2312格式,數(shù)據(jù)庫字段類型也是GB2312的,插入數(shù)據(jù)的時候也set
names
'gb2312'了的,那么set
names
'gb2312'之后獲取數(shù)據(jù)顯示肯定不會異常。
我估計你插入數(shù)據(jù)的時候沒有set
names
'gb2312',或者字段的
字符集
類型不正確。
你可以修改字段的字符集,重新set
names
'gb2312'之后插入數(shù)據(jù)再取出來顯示試試看。