前端总结:Js传参中文乱码解决方法。

     首先,地址栏传中文是很不明智的,因为不同的浏览器对与中文的解析存在不同的方法。所以,建议如果能不用尽量不要用。

当然,很多时候奇葩需求要求我们必须解决这个办法。

下面,是解决个别奇葩需求的方法。

在中文参数加入到地址栏之前进行转码。(注意,简单转码是不可以的,浏览器会根据编码方式对已经编码的部分进行一次反编译。)

正确方法是:

在中文加入到地址栏前,进行两次encodeURI转码

在传输过程中浏览器会解析一遍,到达指定页面获取地址栏参数的时候,再进行一次decodeURI解码就可以了。

列子:

A页面传参

 

  1.     <script type="text/javascript">  
  2.         //通过地址栏传参的方式设置第二个页面b.html的标题为:中文  
  3.         var title = "中文";  
  4.         var t = encodeURI(encodeURI(title));  
  5.         src = "b.html?title="+t;  
  6.     </script>  

B页面接受参数

 

  1.  
  2.     <script type="text/javascript">  
  3.         var t = getParam("title");  //获取url参数 
  4.         var title = decodeURI(t); //只需要转一次码  
  5.         //输出title ="中文"
  6.     </script>  
  7.  
//截取url参数方法。例:(book_id=8, paramName=book_id    ,return 8)
   function getParam(paramName){  
       paramValue = "", isFound = !1;  
       if (this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1)         
      {  
       arrSource = unescape(this.location.search).substring(1, 
       this.location.search.length).split("&"), i = 0;  
       while (i < arrSource.length && !isFound) arrSource[i].indexOf("=") > 0 && 
       arrSource[i].split("=")[0].toLowerCase() ==                 paramName.toLowerCase() && (paramValue = arrSource[i].split("=")[1], isFound = !0), i++  
        }  
   return paramValue == "" && (paramValue = null), paramValue  
}   

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值