數(shù)據(jù)載入的時(shí)候是亂碼還是正常,是從別人機(jī)器上導(dǎo)出數(shù)據(jù)自己恢復(fù)的嗎?
龍海網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(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)。
查看下數(shù)據(jù)庫(kù)的字符集編碼,show
vaiables
like
'%char%'
查看下字符集
使用下latin1
因?yàn)樗悄J(rèn)的
,不行就把數(shù)據(jù)庫(kù)刪了重新建立在導(dǎo)入數(shù)據(jù)
access的中文版默認(rèn)是GBK格式的,是無(wú)法改變字符類型的,所以用php讀取的時(shí)候會(huì)亂碼。
解決方法是:使用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ù)顯示在頁(yè)面的時(shí)候使用enc()函數(shù),從頁(yè)面提交數(shù)據(jù)到數(shù)據(jù)庫(kù)時(shí)使用dec()函數(shù),這樣就可以很好的解決PHP使用UTF-8編碼,ACCESS使用系統(tǒng)默認(rèn)編碼的問(wèn)題了。
兩邊入手,
PHP,需要設(shè)置頁(yè)面編碼,加一行代碼:
header('Content-Type:text/html;charset=utf-8');
這樣就把輸出編碼改為了UTF-8
但是,MySQL也要設(shè)置,那就是連接到數(shù)據(jù)庫(kù)之后再加一行
mysql_query("SET
NAMES
`UTF-8`");
即可
當(dāng)然,你得保證你的數(shù)據(jù)庫(kù)的字符集是UTF-8
如果仍然出錯(cuò),那就說(shuō)明數(shù)據(jù)庫(kù)的字符集配置有問(wèn)題
保證文件的編碼,瀏覽器解析編碼。數(shù)據(jù)庫(kù)數(shù)據(jù)輸出編碼一致就可以了。先把mysql的數(shù)據(jù)庫(kù)編碼設(shè)為utf8。
另存為保存文件編碼為utf8
使用header("content-type:text/html;charset=utf-8"); 或者meta http-equiv="content-type" content="text/html;charset=utf-8" / 告訴瀏覽器解析文件的編碼
數(shù)據(jù)輸出前? mysql_query("set names utf8"); 將數(shù)據(jù)庫(kù)輸出到網(wǎng)頁(yè)中的編碼設(shè)為utf8.
也許是數(shù)據(jù)庫(kù)的問(wèn)題,我也遇到過(guò),我用的是wampserver,界面的工具,直接點(diǎn)鼠標(biāo)就可能建成mysql數(shù)據(jù)庫(kù),建成后導(dǎo)入數(shù)據(jù),查詢數(shù)據(jù)庫(kù)返回面而的是亂碼,我遇到的情況是這樣的:
1、建庫(kù)用gbk,如圖。
2、導(dǎo)入表及數(shù)據(jù)時(shí),默認(rèn)是utf,此處要改成gbk就不是亂碼了,如第圖底頁(yè)面,如果是默認(rèn)的或是其它的字符集,能導(dǎo)入成功但是亂碼。另外直接把sql粘貼到sql窗口,也不是亂碼。
希望能幫到你,呵呵~
要解決亂碼首先需要知道出現(xiàn)亂碼的原因:
一、PHP+MySQL出現(xiàn)中文亂碼的原因。
1. MYSQL數(shù)據(jù)庫(kù)的編碼是utf8,與PHP網(wǎng)頁(yè)的編碼格式不一致,就會(huì)造成MYSQL中的中文亂碼。
2. 使用MYSQL中創(chuàng)建表、或者選擇字段時(shí)設(shè)置的類型不是utf8,而網(wǎng)頁(yè)編碼不是utf8,也可能造成MYSQL中文亂碼.
3. PHP頁(yè)面的字符集與數(shù)據(jù)庫(kù)的編碼不一致。
4. PHP連接MYSQL數(shù)據(jù)庫(kù),操作是設(shè)定的語(yǔ)句指定的編碼和頁(yè)面編碼,PHP頁(yè)面編碼不一致。
5. 用戶提交的HTML頁(yè)面編碼,和顯示數(shù)據(jù)的頁(yè)面編碼不一致 ,就肯定會(huì)造成PHP頁(yè)面亂碼.
二、解決中文亂碼:
1. 網(wǎng)頁(yè)編碼設(shè)置。一般在HTML代碼中的文件頭html中加入屬性:
meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″
保證,網(wǎng)頁(yè)是"utf-8"編碼。
2. PHP代碼設(shè)置。在php代碼的開(kāi)始部分加入以下代碼:
header(”Content-type: text/html;charset=utf-8″);
且要求保存的文件編碼方式是utf-8,這樣就保證了該文件也是utf-8編碼。
3. 數(shù)據(jù)庫(kù)中表的字段中存儲(chǔ)中文的部分,要設(shè)置為utf8_general_ci類型。
4.PHP在連接數(shù)據(jù)庫(kù)操作時(shí),要設(shè)置操作的字段類型為utf8,設(shè)置方法如下:
mysql_connect(’localhost’,'user’,'password’);mysql_select_db(’db’);mysql_query(”set names utf8;”); //**設(shè)置字符集***