摸索这个问题的背景 :
- a.html页面,要直接向b.html页面传参,如果是数字/字母那就一帆风顺了;
- 问题是,要传的是"中文字符"参数 ; 这样一来在b页面截取字符串时,就会出现乱码;
- 如果是在JAVA中,进行编码解码就解决了,可在html中怎么办呢 ?
- 只有借助JS了, 试想问题应该就是出在URL编码问题上 , 那么就从此下手;
- 查阅了一些资料 , 解决方案是 : 通过escape格式的编码解码解决 , 核心代码如下 :
A.html页面
function searchButton(){
var keyword = $("#keyword").val(); // 获取值 :中国
var temp1 = escape(keyword); // 编码 :%u4E2D%u56FD
// var temp2 = unescape(temp1); // 解码 : 中国
location="searchResult.html?keyword="+temp1; // 带参数
}
B.html页面
$(function() {
keyword = GetId("keyword");
alert("URL截取的keyword原始值是:" + keyword); // 中国
// keyword = unescape(temp1); // 解码 (为什么没解码,前面就读取为中国了?)
// alert("解码后的中文字符是 : "+keyword);
})
// 从URL截获字符串的方法
function GetId(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
小结 :
- 通过如上JS实现了要求 , 我还有点存疑是 , B页面没有进行解码 ,直接读取就是相应的中文了 ? 这个原因我还没搞明白 ;
- 后来查了下资料,这么描述的 : escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。这么强大 , 那解码又用在哪呢?
码字不易 , 觉得还好就给个赞 ; 个人感觉这个方法还是很实用的 , 尤其在前后端分离开发的某些场景下 , 还是很需要的.