解决了浏览器URL地址栏直接输入get参数值包含中文时的urlencode编码格式问题
2014-08-07 16:41
1111 查看
前段时间,在做一个采集插件的时候,出现了一个问题。
浏览器网址后面带的get参数值含有中文的时候,在php里面获取字符串并且进行urlencode处理的时候,不同的浏览器,urlencode函数转换后的结果不一样。
原来urlencode这个函数有2中编码方式,一种是gbk格式的编码,一种是utf-8格式的。并且这个格式居然不能再这个函数里面设置,导致这个结果不可控制,在不同浏览器环境下面结果不同,不能得到自己想要的格式编码。在搜索引擎里面找了很长时间,都没有找到解决这个问题的办法,没办法,只能自己手动解决。
经过努力终于解决了,把代码就发出来,供需要的人借鉴一下。
浏览器网址后面带的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函数
相关文章推荐
- url里含有中文参数,已get方式提交到接口,中文编码后有乱码问题的一种解决
- tomcat编码格式的设置/如何解决get()方式提交中文参数乱码的问题
- 浏览器的地址栏输入非asiic字符自己编码,如前台直接生成?d=中文再解码
- Java解决在浏览器地址栏中输入url访问action的问题以及拦截方法过滤的简易实现
- 对于直接地址栏输入的中文参数 在UTF-8系统中的接收,编码的问题.
- Java解决在浏览器地址栏中输入url访问action的问题以及拦截方法过滤的简易实现
- 前台页面使用utf-8编码,url中包含中文参数时后台获取参数乱码问题解决
- struts2 GET方法提交乱码,地址栏输入中文地址乱码解决
- (造福中国前端界)纯前端Js完美解决各种汉字urlencode,urldecode,编码解码问题,不借助任何字库,内码表,轻松一行,兼容IE8+,chrome,firefox,safari等主流浏览器
- 解决get方法传递URL参数中文乱码问题
- 解决servlet中输出中文到浏览器以及post、get两种提交方法乱码问题
- 黄聪:php传递URL中文编码为带%的编码获取后乱码问题(页面utf-8格式)
- javascript 对url参数进行编码(解决中文乱码问题)
- 解决get方法传递URL参数中文乱码问题
- URL传递中文UTF-8编码问题解决办法
- JSP 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法
- 关于在地址栏中直接输入中文,后台获取乱码的问题。
- js传递url含有中文参数值乱码问题的解决
- 解决 Flash 透明模式下Firefox、Opera等浏览器无法输入中文的问题
- 解决从浏览器地址栏直接获得汉字参数乱码问题