其實(shí),只要注意文件編寫的時(shí)候編碼、數(shù)據(jù)庫(kù)的編碼一般就不會(huì)有這個(gè)問(wèn)題的,但是,比如你用DW(dwcs4貌似沒(méi)有這個(gè)現(xiàn)象)打開文件,它會(huì)以默認(rèn)的編碼讀取,一旦你保存了,那就完了,用EditPlus打開之后,右下角有編碼提示,如果發(fā)現(xiàn)不對(duì),另存為,覆蓋一下,就可以了
尼金平網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
你的問(wèn)題提的比較簡(jiǎn)單,實(shí)際上呢,產(chǎn)生亂碼的原因有很多。
最主要的是數(shù)據(jù)庫(kù)的問(wèn)題,在安裝環(huán)境的時(shí)候就要選好字符集,然后
在調(diào)用數(shù)據(jù)庫(kù)的時(shí)候使用相同的字符集。
這里有一個(gè)gb2312的數(shù)據(jù)庫(kù)鏈接函數(shù)。供參考
function
db_connect()
{
$result=new
mysqli('localhost','root','你的密碼','你的數(shù)據(jù)庫(kù)名');
$result-query("set
names
'gb2312'");//字符集
if(!$result)
return
false;
return
$result;
}
數(shù)據(jù)庫(kù)采用UTF8編碼,而頁(yè)面申明編碼是GB2312,這是最常見的產(chǎn)生亂碼的原因。這時(shí)候在PHP腳本里面直接SELECT數(shù)據(jù)出來(lái)的就是亂碼,需要在查詢前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");來(lái)設(shè)定MYSQL連接編碼,保證頁(yè)面申明編碼與這里設(shè)定的連接編碼一致(GBK是GB2312的擴(kuò)展)。如果頁(yè)面是UTF-8編碼的話,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁(yè)面申明的編碼與數(shù)據(jù)庫(kù)內(nèi)部編碼一致可以不設(shè)定連接編碼。
事實(shí)上MYSQL配置文件my.ini中定義了2個(gè)默認(rèn)編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來(lái)分別設(shè)定默認(rèn)時(shí)候客戶端連接和數(shù)據(jù)庫(kù)內(nèi)部所采用的編碼。上面指定的編碼其實(shí)是MYSQL客戶端連接服務(wù)器時(shí)候的命令行參數(shù)character_set_client,來(lái)告訴MYSQL服務(wù)器接受到的客戶端數(shù)據(jù)是什么編碼的,而不是采用默認(rèn)編碼。
轉(zhuǎn)自: