如何解决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 等主流浏览器均没问题