问题背景:在项目中往往会涉及到前端跳转页面时要传一些参数给下一个页面,如果参数是英文或者数字的时候就很好解决,然而有时候传参会涉及到中文汉字,这个时候再单纯的拼接往往就会导致中文乱码,下面我们就该讨论一下如何解决中文传参乱码的问题。
假设A页面跳转到B页面并且A向B传参,首先在A页面中要调用这个方法:encodeURI("这里是中文参数");
完整的拼接效果为:
window.location.href="B.html?&title="+encodeURI("这里是中文参数");
至此页面中文传参已经完成,下一步就是如何把参数给翻译成中文,那么再跳到B页面进行处理。
解码代码也只是一句:decodeURI("需要转码的链接");
而要获取参数,则需要分析链接并做正则匹配进行截取,全部代码如下:
//截取链接传过来的参数
var url=window.location.href; //获取当前页面的url
url = decodeURI(url);//转码
var len=url.length; //获取url的长度值
var a=url.indexOf("?"); //获取第一次出现?的位置下标
var b=url.substr(a+1,len); //截取问号之后的内容
var c=b.split("&"); //从指定的地方将字符串分割成字符串数组
var arr=new Array(); //新建一个数组
for(var i=0;i<c.length;i++){
var d=c[i].split("=")[1]; //从=处将字符串分割成字符串数组,并选择第2个元素
arr.push(d); //将获取的元素存入到数组中
}
至此,前端页面间的传中文参数乱码的问题就得到解决了。