?项目环境:
? ? ssh
上传组件:
? ? uploadify
问题表现:
? ? 上传文件成功以后传递的中文参数(文件名称)部分乱码
问题处理:
? ? 首先可以确定是编码问题,然后单独创建测试工程和Servlet并添加uploadify,测试上传获取中文参数,一切正常。修改原来项目中上传路径为测试Servlet,一切正常,由此确定不是页面编码问题,问题应该出在action中。(通过ActionForm接收参数)
? ? 在action中通过new String(actionForm.getFileName.getBytes(),"UTF-8");强制转码,文件名继续部分乱码,编码修改为GBK,全部乱码。
? ? 所以分析问题应该是在ActionForm中接收参数时已经进行过转码(项目中未添加编码Filter),故在ActionForm中override reset方法,在reset方法中设置编码request.setCharacterEncoding("UTF-8");再次测试,问题解决。
? ? 代码:
class="java">@Override public void reset(ActionMapping mapping, HttpServletRequest request) { try { request.setCharacterEncoding("utf-8"); super.reset(mapping, request); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }
?
? ??