您的位置:首页 > 其它

解决了浏览器URL地址栏直接输入get参数值包含中文时的urlencode编码格式问题

2014-08-07 16:41 1111 查看
   前段时间,在做一个采集插件的时候,出现了一个问题。

浏览器网址后面带的get参数值含有中文的时候,在php里面获取字符串并且进行urlencode处理的时候,不同的浏览器,urlencode函数转换后的结果不一样。
原来urlencode这个函数有2中编码方式,一种是gbk格式的编码,一种是utf-8格式的。并且这个格式居然不能再这个函数里面设置,导致这个结果不可控制,在不同浏览器环境下面结果不同,不能得到自己想要的格式编码。在搜索引擎里面找了很长时间,都没有找到解决这个问题的办法,没办法,只能自己手动解决。

经过努力终于解决了,把代码就发出来,供需要的人借鉴一下。

function urlencodegbk($key){
$num  = mb_strlen($key,"gbk");
$num1 = mb_strlen($key,"utf-8");
if($num > $num1){
$key = iconv("utf-8","gbk//ignore",$key);
}
return urlencode($key);
}
function urlencodeutf8($key){
$num  = mb_strlen($key,"gbk");
$num1 = mb_strlen($key,"utf-8");
if($num <= $num1){
$key = iconv("gbk","utf-8//ignore",$key);
}
return urlencode($key);
}
$key=$_GET['key'];
$gbkkey = urlencodegbk($key);
$uf8key = urlencodeutf8($key);
需要gbk格式编码的urlencode可以用urlencodegbk函数,需要utf-8格式的urlencode可以用urlencodeutf8函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  urlencode url 中文 gbk utf-8
相关文章推荐