access的中文版默認(rèn)是GBK格式的,是無法改變字符類型的,所以用php讀取的時(shí)候會(huì)亂碼。
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括貴池網(wǎng)站建設(shè)、貴池網(wǎng)站制作、貴池網(wǎng)頁制作以及貴池網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,貴池網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到貴池省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
解決方法是:使用iconv轉(zhuǎn)換
一、使用 iconv函數(shù)制作一個(gè)轉(zhuǎn)碼的自定義從GBK轉(zhuǎn)到UTF-8的函數(shù),如以下代碼:
function enc($c){return iconv('gbk','utf-8',$c);}
二、為了寫入數(shù)據(jù)庫(kù)的編碼是符合數(shù)據(jù)庫(kù)需要的,所以我們還要制作一個(gè)從UTF-8轉(zhuǎn)向GBK的函數(shù):
function dec($c){return iconv('utf-8','gb2312',$c);}
制作好了轉(zhuǎn)碼函數(shù),接下就是正常使用了。在從數(shù)據(jù)庫(kù)里面調(diào)數(shù)據(jù)顯示在頁面的時(shí)候使用enc()函數(shù),從頁面提交數(shù)據(jù)到數(shù)據(jù)庫(kù)時(shí)使用dec()函數(shù),這樣就可以很好的解決PHP使用UTF-8編碼,ACCESS使用系統(tǒng)默認(rèn)編碼的問題了。
確保三碼合一就可以了..
第一個(gè)是數(shù)據(jù)庫(kù)的字符集
第二個(gè)就是存進(jìn)去的時(shí)候字符集
第三個(gè)就是顯示的時(shí)候的字符集
這三個(gè)都有可能造成亂碼;
第一個(gè) 舉例是:如果你插入的時(shí)候用的是GB2312 ,但你表中的default charset是utf8 那么,就有可能亂碼了.
第二種情況就是你插入正確 但你查詢的時(shí)候以UTF8查詢出來,但你在HTML頁面里設(shè)置編碼如果非UTF8那么也有可能造成亂碼.
其實(shí),只要注意文件編寫的時(shí)候編碼、數(shù)據(jù)庫(kù)的編碼一般就不會(huì)有這個(gè)問題的,但是,比如你用DW(dwcs4貌似沒有這個(gè)現(xiàn)象)打開文件,它會(huì)以默認(rèn)的編碼讀取,一旦你保存了,那就完了,用EditPlus打開之后,右下角有編碼提示,如果發(fā)現(xiàn)不對(duì),另存為,覆蓋一下,就可以了