表单的中文处理一次故障处理
曾经被已经解决过得问题再次烦恼,真是一次不愉快的事情。也许让我更加认识了问题的原因,或者不同情况下的处理。
在表单提交处理中文的时候,我们大多使用 request.setCharacterEncoding("gb2312") 方法,或者使用servlet的filter过滤设置来处理中文表单的提交。需要注意的是,这个方法的使用一定需要在 request.getParameter前使用。否则对你所需要的结果会有不同的影响:
在Apache Tomcat/ 4.1.27 下面,字符集设置无效。字符仍然乱码,没有进行正常的转换。
在weblogic 7.0.5 .0下面,一些正常,没有不正常现象。
参考jsp。
<%@ page language="java" contentType="text/html; charset=gb2312" %> <html> <% String strId = request.getParameter("Id"); request.setCharacterEncoding("gb2312"); String strName = request.getParameter("name"); System.out.println("strName is : " + strName); %> <body> This is my JSP page. <br> <FORM method="post"> <INPUT type="text" name="Id" value='<%=strId%>'/> <br> <INPUT type="text" name="name" value='<%=strName%>'/> <br> <INPUT type="submit"> </FORM> </body> </html> |
不同的环境,总是有时候出现不同的情况,让你不得不劳累身心的去测试环境。再次发布系统的时候,一定要加上环境,可能这个环境最好限定在你所进行安全测试的安全环境。
上面只是一个演示的例子,我所遇到的情况是在request去过一个参数后,然后调用一个共有方法填充对象,在设置中文的时候出了问题。又讨饶了我不少时间。虽然j2ee规范是一致,实现还是有所区别哦。