如何解决js地址栏中传递中文乱码的问题

发布时间 2023-11-21 09:57:36作者: 曲琦

首先,地址栏传中文是很不明智的,因为不同的浏览器对与中文的解析存在不同的方法。所以,建议如果能不用尽量不要用。 当然,很多时候奇葩需求要求我们必须解决这个办法。 下面,是解决个别奇葩需求的方法。 在中文参数加入到地址栏之前进行转码。(注意,简单转码是不可以的,浏览器会根据编码方式对已经编码的部分进行一次反编译。)\

正确方法是: 在中文加入到地址栏前,进行两次encodeURI转码 在传输过程中浏览器会解析一遍,到达指定页面获取地址栏参数的时候,再进行一次decodeURI解码就可以了。\

列子:
A页面传参


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

B页面接收参数

<script type="text/javascript">  
        var t = getParam("title");  //获取url参数 
        var title = decodeURI(t); //只需要转一次码  
        //输出title ="中文"
</script>