JS 传值到jsp 中文字符乱码

转载 2013年12月04日 09:36:51

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");

相关文章推荐

jsp页面js提交传递中文字符时乱码处理

在js中通过encodeURI(encodeURI("要转的字符")); encodeURI说明:http://www.w3school.com.cn/js/jsref_encodeURI.asp...

jsp 页面传值 到后台 中文乱码解决方法

例jsp中传入的参数名字:shortname 情况(1):和方法2针对的情况一样 如果是第3种情况的话就不适用了                      java后台代码这样处理   String ...
  • zygzzp
  • zygzzp
  • 2014年04月02日 14:58
  • 2953

jsp—(GET传值)—>servlet 中文乱码解决方案

在做web开发的时候,经常涉及到使用GET传递中文到后台,而中文的编码解码很麻烦,以下是亲自实现过的方案,可以正常传递中文,留着以后好用。 方案一: 1、使用encodeURI,两次编码: ja...

jsp页面传值中文出现乱码的问题

有时在jsp页面间进行传值时会出现中文乱码问题,它们一般是在中文值传递的过程对中文进行了编码,所以造成接收到中文乱码问题。 解决的思路有两个: 其一是在传值前就进行编码操作,将中文进行字符编码,使...

JS中页面跳转,传值包含中文时乱码解决方案

首先,在JS中将要传递的中文编码:encodeURI(encodeURI(value)); 然后在跳转界面中取值时通过以下方式解码:java.net.URLDecoder.decode(value ...

structs传值中文乱码

  • 2009年11月09日 22:45
  • 52KB
  • 下载

JSP、AJax中文乱码问题解决,escape(), encodeURI(), encodeURIComponent(),js对参数连续两次调用 encodeURI(String) 方法

ajax检证用户就否存在和解决乱码问题! 原文:http://user.qzone.qq.com/278887848/blog/11 写了一个ajax,在...

jsp中传值问题及乱码问题

jsp中action方法get与post区别  这两者传递参数时所用的编码不一定是一样的。 在Tomcat中似乎Get提交的编码方式是根据页面中指定的编码方式, 而Post提交则是一...

基于Spring解决jsp传值乱码问题 get post

基于Spring解决jsp传值乱码问题 get post

jsp页面向后台传值出现乱码的问题

转载自:http://blog.csdn.net/zsy5606666/article/details/7719218(原文也为转载) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS 传值到jsp 中文字符乱码
举报原因:
原因补充:

(最多只允许输入30个字)