tomcat采用UTF-8编码

时间:2023-01-05 13:39:36

总算找到个看起来比较靠谱的说明:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

另外还参考了:http://www.iteye.com/topic/179279

 

1.页面乱码,要在页面前端加上

JSP:

<%@page language="java" pageEncoding="UTF-8"%>

 

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

2.页面form传入参数乱码(主要是由于tomcat默认采用ISO-8859-1编码)

可以采用以下代码将获得参数test:

String theParam = new String(request.getParameter("someParam").getBytes("ISO-8859-1"), "UTF-8");

 

由于以上方法需要在取每个参数的时候都进行类似操作,整体修改的方法是写一个过滤器:

package filters;import java.io.*;import javax.servlet.*;/* * 字符编码设置过滤器 */public class SetCharacterEncodingFilter implements Filter {@Overridepublic void destroy(){}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException{request.setCharacterEncoding("utf-8");//将编码统一设置为UTF-8chain.doFilter(request, response);}@Overridepublic void init(FilterConfig config) throws ServletException{}}

同时在web.xml中配置此过滤器:

<filter>    <filter-name>SetCharacterEncoding</filter-name>    <filter-class>filters.SetCharacterEncodingFilter</filter-class></filter><filter-mapping>    <filter-name>SetCharacterEncoding</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

过滤器方式仅对POST方法有效,要使FORM的GET方法也可以正确读取参数,要在TOMCAT的server.xml中修改Connector元素,为其加上URI-ENCODING="UTF-8"属性

    <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="443"  URIEncoding="UTF-8"/>