项目中遇到的URL汉字参数转码的问题

来源:互联网 发布:ai技术 编程语言 编辑:程序博客网 时间:2024/06/06 05:51

在项目中遇到这样一个问题,url中用中文传递参数,用户是用ajax提交数据的。


以下是用JS获取url的参数,以及相关信息

function GetRequest() {   var url = location.search;   var theRequest = new Object();   if (url.indexOf("?") != -1)    {  var str = url.substr(1);  strs = str.split("&");  for(var i = 0; i < strs.length; i ++)           { theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);  }   }   return theRequest;}var utm_term = typeof(Request['utm_term']) == 'undefined' ? '' : '&utm_term='+escape(Request['utm_term']);if (utm_term != ''){var url = document.referrer;var tempurl = '';var theRequest = new Object();if (url.indexOf("?") != -1) {var str = url.substr(1);strs = str.split("&");for (var i = 0; i < strs.length; i++) {theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);}if (typeof(theRequest['word']) != 'undefined'){tempurl = theRequest['word'].split('/')[2];}else if (typeof(theRequest['ltu']) != 'undefined'){tempurl = theRequest['ltu'].split('/')[2];}else if (typeof(theRequest['u']) != 'undefined'){tempurl = theRequest['u'].split('/')[2];}else{tempurl = url.split('/')[2];}}else {tempurl = url.split('/')[2];}utm_term = utm_term + '[' + tempurl + ']';}

提交信息

$.ajax({type: 'post',data: utm_term,dataType: 'json',error: function () {},success: function (data) {},url: '/regist'});

在IE下参数 被转为 %u6708

接受到参数后,在php中做了处理,方法如下:


$str = '%u6708';$arr = explode('%u', $str);$len = count($arr);for ($i=1;$i<$len;$i++){if (strlen ($arr[$i]) >= 4){$temp_str = substr ($arr[$i], 0, 4);$search_str = '%u'.substr ($arr[$i], 0, 4);$replace_str = '&#'.hexdec ($temp_str).';';$replace_str = mb_convert_encoding ($replace_str, 'UTF-8', 'HTML-ENTITIES');$str = str_replace ($str, $replace_str, $return_str);}}return $str;



0 0
原创粉丝点击