Struts的中文问题,由3部分组成:
1、 jsp提交数据的时候,必须是UTF-8编码的
2、struts拿到数据后进行UTF-8解码
3、服务端跳转到jsp进行显示的时候,要指定浏览器使用UTF-8进行显示
UTF-8可以换成GBK或者GB2312,但是必须统一,不能混用。
对应解决办法:
1、JSP提交时必须为UTF-8编码
jsp文件中,设定提交数据的时候指定编码方式UTF-8,并且设置form 的method为post方式,代码示例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<html>
<form action="addProduct" method="post">
<input type="text" name="product.name">
<br/>
<input type="submit" value="submit">
</form>
</html>
其中,contentType相当于response.setContentType(“text/html; charset=UTF-8”); 通知浏览器以UTF-8进行中文解码;pageEncoding为如果jsp文件中出现了中文,这些中文使用UTF-8进行编码。
2、struts拿到数据后进行UTF-8解码
在struts.xml文件中进行如下配置:
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
3、服务端跳转到jsp进行显示的时候,要指定浏览器使用UTF-8进行显示,示例代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@page isELIgnored="false"%>
${product.name}