最近在项目中使用ext和struts2实现文件上传的功能,在ext定义的form中定义了 fileUpload:TRUE,以实现文件上传的功能。但是出现的乱码的问题,在后台中拿到的文件名是乱码,从前端得到的其他参数,如文件说明等信息,传到后台struts2后也是乱码。在网上找了各种方法,比如设置struts配置文件 struts.i18n.encoding=utf-8,进行字符串编码转码,修改JSP的编码。其中将JSP中的编码有GBK改为UTF-8时会是的页面出现乱码,进行字符串转码也还是得到乱码,该struts的配置文件也出现乱码。网上还有说修改web.xml配置文件的字符编码过滤器,但是我已经定义了struts的过滤器,不知道再怎么定义编码过滤器,希望哪位大侠可以不吝赐教。
后来解决的方法是,前端在向后台传参数前先对要传的参数进行编码,如
materialDescript : encodeURIComponent(descript),
然后在后台拿到参数后再对其进行解码,如:
String descriptUtf = java.net.URLDecoder.decode(this.getMaterialDescript(), "UTF-8");
这样就能正确显示前端输入的参数。
参考了这篇博文: http://blog.csdn.net/wangcaidpjxwq/archive/2011/02/14/6184121.aspx