JS 传值到jsp 中文字符乱码

来源:互联网 发布:js属性大全 编辑:程序博客网 时间:2024/06/02 04:19

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");
原创粉丝点击