表单中文乱码问题经常出现在web站点开发中,今天试了下struts2,依然出现了中文乱码问题,网上查询发现各种答案,不过仅仅只有零星的答案是正确的,下面我将自己成功的方法做下记录。
struts2中默认编码为UTF-8,其内置的标签之类的编码均为UTF-8。对于自己编写的jsp页面,只需要相应将页面开头和页面编码设置成UTF-8即可。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=UTF-8" %>
我在设置上述后依然出现乱码,这主要是由于tomcat的默认URL编码方式为ISO-8859-1造成的。因此你可以在action类中自己进行编码装换:
String userName=new String(name.getBytes("ISO8859_1"),"UTF-8");
如果希望自动装换,解决方法也很简单,就是设置tomcat的编码方式,在server.xml中设置URIEncoding
<!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
完成上述两步后,struts2表单中文乱码问题解决。