mysql_query("set character set 'GB2312'"); //設(shè)置字節(jié)集編碼
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供阿里地區(qū)網(wǎng)站建設(shè)、阿里地區(qū)做網(wǎng)站、阿里地區(qū)網(wǎng)站設(shè)計(jì)、阿里地區(qū)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、阿里地區(qū)企業(yè)網(wǎng)站模板建站服務(wù),10余年阿里地區(qū)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
你找到你讀取數(shù)據(jù)庫(kù)函數(shù)的這條 沒(méi)有的話增加一條
數(shù)據(jù)庫(kù)是UFT-8 你應(yīng)該豪不留情的用UTF-8 不然icnov不支持特殊字符 及片甲字
給你幾行個(gè)關(guān)鍵的代碼.關(guān)鍵是urlencode配合mb_convert_encoding().
要使用mb_convert_encoding需要打開(kāi)php.ini中的mbstring擴(kuò)展
在windows下測(cè)試可直接修改php.ini,去掉extension=php_mbstring.dll前的分號(hào)并重啟apache.
=============
$test = '測(cè)試';
$ary[] = "GBK";
$ary[] = "GB2312";
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
//百度用
echo urlencode($test);
//google用
echo "br";
echo urlencode(mb_convert_encoding($test, "UTF-8", mb_detect_encoding($test,$ary)));
===========
說(shuō)白了,明白一個(gè)簡(jiǎn)單的事實(shí).
百度用的是gb2312,google用的是utf-8
其實(shí)都要用php的urlencode函數(shù).
如果你的程序編碼是utf-8,則需要對(duì)百度的gb2312轉(zhuǎn)碼,方法也是用上面的.
例子我用的gb2312,所以把字符串"測(cè)試"轉(zhuǎn)成utf-8后再u(mài)rlencode();
明白了吧?
你需要先確定你的數(shù)據(jù)是在哪個(gè)環(huán)節(jié)亂碼的,比如你這里是get到的數(shù)據(jù),那你先確定一下地址欄上的數(shù)據(jù)是否完好,如果完好,你再看一下你當(dāng)前的Php頁(yè)面的頁(yè)面編碼是否與傳輸數(shù)據(jù)的php頁(yè)面編碼一致
php轉(zhuǎn)碼一般用iconv()方法。
如:iconv("轉(zhuǎn)碼前的編碼","轉(zhuǎn)碼后的編碼",需要轉(zhuǎn)換編碼的字符串);
$result_array?=?array();//定一個(gè)接收結(jié)果的空數(shù)組。
$array=array("電腦"=12,"內(nèi)存"=3,"顯示器"=19);//定義數(shù)組即要轉(zhuǎn)換編碼的數(shù)組
foreach?($s?as?$key?=?$value)?{//使用foreach循環(huán)遍歷數(shù)組。
$key=iconv("GBK","UTF-8",$key);//對(duì)數(shù)組的鍵進(jìn)行轉(zhuǎn)碼即要轉(zhuǎn)換編碼的文字。
$result_array[$key]=$value;//從新拼接一個(gè)新的數(shù)組(轉(zhuǎn)碼后)
}
var_dump($result_array)//打印轉(zhuǎn)碼后的數(shù)組進(jìn)行確認(rèn)。