access的中文版默認(rèn)是GBK格式的,是無法改變字符類型的,所以用php讀取的時候會亂碼。
創(chuàng)新互聯(lián)公司專注于萬全網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供萬全營銷型網(wǎng)站建設(shè),萬全網(wǎng)站制作、萬全網(wǎng)頁設(shè)計(jì)、萬全網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造萬全網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供萬全網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
解決方法是:使用iconv轉(zhuǎn)換
一、使用 iconv函數(shù)制作一個轉(zhuǎn)碼的自定義從GBK轉(zhuǎn)到UTF-8的函數(shù),如以下代碼:
function enc($c){return iconv('gbk','utf-8',$c);}
二、為了寫入數(shù)據(jù)庫的編碼是符合數(shù)據(jù)庫需要的,所以我們還要制作一個從UTF-8轉(zhuǎn)向GBK的函數(shù):
function dec($c){return iconv('utf-8','gb2312',$c);}
制作好了轉(zhuǎn)碼函數(shù),接下就是正常使用了。在從數(shù)據(jù)庫里面調(diào)數(shù)據(jù)顯示在頁面的時候使用enc()函數(shù),從頁面提交數(shù)據(jù)到數(shù)據(jù)庫時使用dec()函數(shù),這樣就可以很好的解決PHP使用UTF-8編碼,ACCESS使用系統(tǒng)默認(rèn)編碼的問題了。
按以下步驟檢查處理。
(1)HTML編碼指定是否正確?檢查head段中是否包含以下
meta
http-equiv="Content-type"
content="text/html;
charset=utf-8"
/
(2)檢查HTML文件本身的編碼有無問題。
(3)查詢數(shù)據(jù)庫之前設(shè)置編碼。
$sql
=
"set
names
utf8";
mysql_query($sql,$local_conn);
(4)檢查數(shù)據(jù)庫編碼及數(shù)據(jù)表及字段編碼是否均為UTF8。注意,數(shù)據(jù)庫編碼及表編碼及字段編碼不是一個概念。
這個可能是你在安裝環(huán)境的時候出現(xiàn)了問題,在安裝mysql的時候,數(shù)據(jù)庫默認(rèn)的不是gb2312,是西歐字符,建議你重新安裝數(shù)據(jù)庫,或是使用wampsever集成安裝環(huán)境,默認(rè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)問題的幾率就更小了。
數(shù)據(jù)庫采用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產(chǎn)生亂碼的原因。這時候在PHP腳本里面直接SELECT數(shù)據(jù)出來的就是亂碼,需要在查詢前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");來設(shè)定MYSQL連接編碼,保證頁面申明編碼與這里設(shè)定的連接編碼一致(GBK是GB2312的擴(kuò)展)。如果頁面是UTF-8編碼的話,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與數(shù)據(jù)庫內(nèi)部編碼一致可以不設(shè)定連接編碼。
事實(shí)上MYSQL配置文件my.ini中定義了2個默認(rèn)編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來分別設(shè)定默認(rèn)時候客戶端連接和數(shù)據(jù)庫內(nèi)部所采用的編碼。上面指定的編碼其實(shí)是MYSQL客戶端連接服務(wù)器時候的命令行參數(shù)character_set_client,來告訴MYSQL服務(wù)器接受到的客戶端數(shù)據(jù)是什么編碼的,而不是采用默認(rèn)編碼。
轉(zhuǎn)自:
確保三碼合一就可以了..
第一個是數(shù)據(jù)庫的字符集
第二個就是存進(jìn)去的時候字符集
第三個就是顯示的時候的字符集
這三個都有可能造成亂碼;
第一個 舉例是:如果你插入的時候用的是GB2312 ,但你表中的default charset是utf8 那么,就有可能亂碼了.
第二種情況就是你插入正確 但你查詢的時候以UTF8查詢出來,但你在HTML頁面里設(shè)置編碼如果非UTF8那么也有可能造成亂碼.
分享名稱:php查詢數(shù)據(jù)庫亂碼 sql查詢數(shù)據(jù)庫中的亂碼數(shù)據(jù)
當(dāng)前路徑:http://chinadenli.net/article18/dodeodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、用戶體驗(yàn)、小程序開發(fā)、營銷型網(wǎng)站建設(shè)、ChatGPT、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)