URL传参时,中文参数乱码的解决:
今天在工作中遇到了这样的一个问题,在页面之间跳转时,我将中文的参数放入到url中,使用location进行跳转传参,但是发现接收到的参数值是乱码。我的代码是这样写的:
1.跳转前,对url进行了编码:
url = EMPTools.encodeURI(url);
window.location = url;
2.接收时,对url进行了解码:
url = decodeURI(url);
发现:接收到的信息并非正常的那种%和数字的编码,而是彻底的乱码(有方框有英文字母);
费解!
查找资料后,发现有些人的解决方式是将url二次编码,于是改为:
1.跳转前,对url进行二次编码:
url =
EMPTools.encodeURI(EMPTools.encodeURI(url));
window.location = url;
2.接收时,对url进行了解码:
url = decodeURI(url);
发现:这次接收到的是含有%和数字的正常的url编码,但仍然不是汉字。
挠头!
细想后,既然编码时时二次编码,那解码时也应该是二次解码啊!
于是修改为:
1.跳转前,对url进行二次编码:
url =
EMPTools.encodeURI(EMPTools.encodeURI(url));
window.location = url;
2.接收时,对url进行二次解码:
url = decodeURI(decodeURI(url));
结果:终于接收到正常的中文参数了!
疑问:为什么需要进行二次编码呢?
备注:
在jsp页面的中,最好能在调用request的所有方法的语句之前,加上设置request编码类型的代码:
request.setCharacterEncoding("UTF-8");
本文讲述了在使用location进行URL传参时遇到中文乱码问题,通过两次编码和解码操作找到正确解决方案的过程,涉及前端编码技巧和字符集设置。
839

被折叠的 条评论
为什么被折叠?



