js获取url中的中文参数出现乱码

之前从url中获取参数遇到过中文变成乱码的格式,之后从网上找了一些资料发现了原因,先上代码:

function getRequest() {  
       var url = window.location.search; //获取url  
       var theRequest = new Object();  //新建对象用来保存参数
       if (url.indexOf("?") != -1) {  //判断url是否有?
          var str = url.substr(1);  //获取?后面的字符串如id=1&name=111之类的
          strs = str.split("&");  //根据&把字符串分着成数组
          for(var i = 0; i < strs.length; i ++) {  
             theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]); //再把如id=1形式的变成id:1
          }  
       }  
       return theRequest;  
    }

关于防止中文变成乱码,就是用decodeURI();
看下介绍:
decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
而encodeURI()我搜了下encodeURI() 函数可把字符串作为 URI 进行编码。
看看的效果

var test1="http://www.w3school.com.cn/My first/我的"
document.write(encodeURI(test1)+ "<br>")//http://www.w3school.com.cn/My%20first/%E6%88%91%E7%9A%84
document.write(decodeURI(test1))//http://www.w3school.com.cn/My first/我的

所以解析url参数出现中文乱码,可以看看是不是解码出了问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容