struts2 jsp教程表单提交到action中文乱码问题
struts2中默认提交的格式是utf-8格式的,故需要把中文字符转码后才能正常显示,解决方法:
直接在struts.xml文件中<struts> 标签内部添加一句如下代码:
<constant name="struts.i18n.encoding" value="gbk" />
注意:如果你jsp页面中使用的是utf-8格式,那么此处也写成utf-8格式。
下面看代码
下面是一个提交页面(submit.jsp),代码如下:
<html>
<head>
<title>jsp的中文处理</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head><body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="submit" value="submit">
</div>
</form>
</body>
</html>
下面是处理页面(process.jsp)代码:
<%@ page contenttype="text/html; charset=gb2312"%>
<html>
<head>
<title>jsp的中文处理</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head><body>
<%=request.getparameter("name")%>
</body>
</html>
如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用utf-8编码方式来发送请求,而utf-8和gb2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.secharacterencoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:
<%@ page contenttype="text/html; charset=gb2312"%>
<%
request.secharacterencoding("gb2312");
%>
<html>
<head>
<title>jsp的中文处理</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head><body>
<%=request.getparameter("name")%>
</body>
</html>