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

   前段时间,在做一个采集插件的时候,出现了一个问题。

浏览器网址后面带的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函数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值