关闭

JS 传值到jsp 中文字符乱码

249人阅读 评论(0) 收藏 举报

JS 传值到jsp 中文字符乱码

在实际开发中碰到一个非常头痛的问题,在js文件中向jsp页面传中文字符时碰见了一个字符乱码(get传递方式)。在传值时使用encodeURI进行了编码,然后再接收端(jsp)使用了URLDecoder.decode('','字符编码'),进行解码但还是有字符乱码问题。

解决办法,对传递中文字符的参数进行两次的的编码encodeURI(encodeURI("")),就OK!.

为什么要encodeURI(url)两次才不会出现乱码?

因为Tomcat服务器会自动帮你做一次URLDecode,所以再加上你自己在代码里面写的URLDecode,一共就是两个Decode了,既然要两次Decode,当然就需要两次Encode了。或许你会问,干脆只Encode一次,然后在java代码里不Decode,呵呵,这个也是不行的,这其实也就是为什么要进行Encode的原因吧

1.传参编码(编两次码)
function searchfriends(tab,param){
  window.location.href="/jttiyan/hi/searchFriend.action?tab="+tab+"&param="+encodeURI(encodeURI(param));
}

2.jsp中接受参数解码(解两次码)
var param=decodeURI(decodeURI('<s:property value="#request.parameters.param[0]"/>'));

3.action中接受参数解码
java.net.URLDecoder.decode(request.getParameter("param"),"utf-8");
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4058次
    • 积分:102
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条