前台代码
$.ajax({
url:'/test/test.do',
type:"POST",
data:"test="+test, //test是中文字符
error: function(msg){
alert('Error loading XML document'+msg);
},
success: function(data)
{
alert(data);
}
})后台代码test.javapublic class UsbkeyWriteCheckUsbkeyInfo extends Action {
······
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session=request.getSession();
UsbkeyForm usbkeyForm = (UsbkeyForm)form;
System.out.println(usbkeyForm.getJgdm());
String test= request.getParameter("test");
String responseText="1";
PrintWriter out=response.getWriter();
out.println(responseText);
return super.execute(mapping, form, request, response);
}
}我后台获取的test是乱码 请问这个是什么情况 小弟没有搞JAVA请大牛帮帮忙
$.ajax({
url:'/test/test.do',
type:"POST",
data:"test="+test, //test是中文字符
error: function(msg){
alert('Error loading XML document'+msg);
},
success: function(data)
{
alert(data);
}
})后台代码test.javapublic class UsbkeyWriteCheckUsbkeyInfo extends Action {
······
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session=request.getSession();
UsbkeyForm usbkeyForm = (UsbkeyForm)form;
System.out.println(usbkeyForm.getJgdm());
String test= request.getParameter("test");
String responseText="1";
PrintWriter out=response.getWriter();
out.println(responseText);
return super.execute(mapping, form, request, response);
}
}我后台获取的test是乱码 请问这个是什么情况 小弟没有搞JAVA请大牛帮帮忙
解决方案 »
- tomcat含有中文的文件不能下载
- 权重值怎么设置
- 你还在为你的老板卖命吗?累的像狗似的,可是工资呢?
- 关于xFile、webservice与oracle
- 请大家协助解决一个搞笑的问题--在SSH开发中出现了org.springframework.beans.factory.BeanCreationException异常,请大家帮忙分析下!!!
- 求助,使用httpclient实现登陆的问题,高手来看看
- 有经验的朋友介绍几本入门书看看啊
- 公布源代码,提供下载,基于数据库的一套工作流系统,大家批批
- 请用两三句话来描述MVC是设计模式?
- 困惑中!!!用SessionBean中的一个方法,实现对数据库的更新?这个问题怎么解决?
- httpclient上传文件问题(求救)
- 在线文件比较系统,求思路
我的jsp页面编码为gb2312,ajax传参数时这么传encodeURIComponent(encodeURIComponent(test))
action对收到的数据这么处理:
URLDecoder.decode(URLDecoder.decode(test,"utf-8"), "gb2312");
可以取消乱码,具体原理也不是很清楚,只知道jquery默认的编码是utf-8的
乱码就要找编码方式! java默认的就是gb2312
1. 网页页面使用utf-8
<meta http-equiv="Content-type" content="text/html; charset=utf-8">2. ajax默认使用utf-8传输数据, 但最好使用post, 不要使用get3. Struts2中使用UTF-8.
3.1 在struts.properties中加上: struts.i18n.encoding=UTF-8
[3.2 使用Filter: 从页面中传输数据到Struts2, 需要使用过滤器把数据在交给struts2前转换成utf-8的: http://stevieliu.blogchina.com/stevieliu/6223098.html]
试过不使用3.2照常可以收到中文.4. 数据库也要使用utf-8, 在建表时设置好.
http://imysql.cn/charset_tips5. hibernate.cf.xml配置文件中与数据库的连接符串也要标明使用的编码为utf-8: <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mlm?useUnicode=true&characterEncoding=UTF-8</property>
所以如果后台编码不是utf-8的话就不要使用jquery发ajax了,
encodeURIComponent(encodeURIComponent(test)) 这是是把汉字转化成 //2345这种形式来传递这样处理可以解决乱码的问题 但是好像要处理特殊字符才能,不然后特殊字符会出问题
request.CharacterEncoding("UTF-8");如果能解决问题的话,换回POST,在Action中相应的加入如下代码:
String test = request.getParameter("test");
//Action收到请求参数默认是以老外的ISO8859-1来解码的
test = new String(test.getBytes("ISO8859-1"),"UTF-8");
就可以解决乱码了。
当然设置一个全局的中文乱码过滤器是最好的选择,4楼的filter似乎还有不妥之处就是POST请求乱码是如何解决的?