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

目标要求:

实现从A页面跳转至B页面,B页面接收A页面通过地址栏传递过来的中文参数,中文不能出现乱码。

A页面部分代码(传递参数):

var title = "这是中文";
var t = encodeURI(encodeURI(title));
window.location.href = "b.html?title=" + t;

 

B页面部分代码(接收参数):

var t = GetQueryString("title"); //获取地址栏参数
var title = decodeURI(t); //只需要转一次码
 
// 利用正则表达式方式,获取地址栏中的的参数值
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if(r != null)
        return unescape(r[2]);
    return null;
}

  

关键方法讲解:

1. encodeURI()    函数可把字符串作为URI进行编码

2. decodeURI()    函数可对encodeURI()函数编码过的URI进行解码

 

经过实测IE,Chrome,Fire Fox 等主流浏览器均没问题

posted @ 2022-09-16 16:38  曲琦  阅读(330)  评论(0)    收藏  举报