表单的中文处理一次故障处理
曾经被已经解决过得问题再次烦恼,真是一次不愉快的事情。也许让我更加认识了问题的原因,或者不同情况下的处理。
在表单提交处理中文的时候,我们大多使用 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规范是一致,实现还是有所区别哦。