extjs乱码解决方法

今天在用ext+struts2做东西的时候,出现参数传递乱码情况,Action接收到的参数值始终都是乱码 
1.将页面,工程,都设置成utf-8  
2.传参方式也改成post 
3.tomcat 也修改成utf-8 
4.ext-base.js此处也修改成"application/x-www-form-urlencoded; charset=UTF-8" 
5,接收的时候转码String str = new String(str.getBytes("ISO8859-1"),"GBk"); 
仍然没有解决问题出现乱码,奇怪了,最后发现其实很简单,问题还是出在传参方式上,参数不能直接跟在Action后面,

 
  1. url: "adOwner/adActivitiesQuery.action?username='<%=username%>",  
url: "adOwner/adActivitiesQuery.action?username='<%=username%>",

因为这样传递仍然是采用的get方式,修改为

 
  1. baseParams:{   
  2.                                 username:'<%=username%>'  
  3.                                
  4.                         },   
  5.                         proxy:new Ext.data.HttpProxy({   
  6.                             url: "adOwner/adActivitiesQuery.action",   
  7.                             method:'POST'  
  8.                         }),  
baseParams:{ username:'<%=username%>' }, proxy:new Ext.data.HttpProxy({ url: "adOwner/adActivitiesQuery.action", method:'POST' }),


5.如果还没解决问题,可能是你struts.xml文件里面<constant name="struts.i18n.encoding" value="utf-8" />value设置成了其他编码方式 


6.有时候将tomcat字符直接设置成GBK就能解决问题,不知道原因,有知道的请告知,谢谢 extjs 默认传值方式是utf-8 
7.formfile表单提交的时候返回值action.result.msg 出现中文乱码,解决方法:

 
  1. response.setContentType("text/html;charset=utf-8");   
  2.     PrintWriter out = response.getWriter();out.write("{success:false,msg:'你选择的文件不是图片格式'}");   
  3.     out.flush();   
  4.     out.close();  
response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter();out.write("{success:false,msg:'你选择的文件不是图片格式'}"); out.flush(); out.close();


有人说使用response.setContentType("text/json; charset=utf-8");可老是弹出*.action是否保存,使用response.setCharacterEncoding("UTF-8");会报未结束的字符串常量错误 

==================== 
又遇乱码:在使用uri传递中文参数时产生乱码 
解决方法: 
js

 
  1. var assetName = form.findField('filter_LIKE_assetName')   
  2.                                 .getValue();   
  3. encodeURIComponent(encodeURIComponent(assetName))  
var assetName = form.findField('filter_LIKE_assetName') .getValue();encodeURIComponent(encodeURIComponent(assetName))


此处一定要转两次 
java:

 
  1. URLDecoder.decode(request.getParameter("assetName"),"UTF-8")  
URLDecoder.decode(request.getParameter("assetName"),"UTF-8")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值