十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql_query("set character set 'GB2312'"); //设置字节集编码
成都创新互联公司专业为企业提供阿里地区网站建设、阿里地区做网站、阿里地区网站设计、阿里地区网站制作等企业网站建设、网页设计与制作、阿里地区企业网站模板建站服务,10余年阿里地区做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
你找到你读取数据库函数的这条 没有的话增加一条
数据库是UFT-8 你应该豪不留情的用UTF-8 不然icnov不支持特殊字符 及片甲字
给你几行个关键的代码.关键是urlencode配合mb_convert_encoding().
要使用mb_convert_encoding需要打开php.ini中的mbstring扩展
在windows下测试可直接修改php.ini,去掉extension=php_mbstring.dll前的分号并重启apache.
=============
$test = '测试';
$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)));
===========
说白了,明白一个简单的事实.
百度用的是gb2312,google用的是utf-8
其实都要用php的urlencode函数.
如果你的程序编码是utf-8,则需要对百度的gb2312转码,方法也是用上面的.
例子我用的gb2312,所以把字符串"测试"转成utf-8后再urlencode();
明白了吧?
你需要先确定你的数据是在哪个环节乱码的,比如你这里是get到的数据,那你先确定一下地址栏上的数据是否完好,如果完好,你再看一下你当前的Php页面的页面编码是否与传输数据的php页面编码一致
php转码一般用iconv()方法。
如:iconv("转码前的编码","转码后的编码",需要转换编码的字符串);
$result_array = array();//定一个接收结果的空数组。
$array=array("电脑"=12,"内存"=3,"显示器"=19);//定义数组即要转换编码的数组
foreach ($s as $key = $value) {//使用foreach循环遍历数组。
$key=iconv("GBK","UTF-8",$key);//对数组的键进行转码即要转换编码的文字。
$result_array[$key]=$value;//从新拼接一个新的数组(转码后)
}
var_dump($result_array)//打印转码后的数组进行确认。