做JSP程序时页面传的文字经常是乱码,如何解决呢?
一种方法是把tomcat中所有的<Connector>标签的URIEncoding属性进行设置,如: <Connector port="8000" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
而另一种方法就是写过滤器
import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import java.io.IOException;
public class EncodingFilter implements Filter { FilterConfig config = null; // default to GBK private String targetEncoding = "GBK";
public void init(FilterConfig config) throws ServletException { this.config = config; this.targetEncoding = config.getInitParameter("encoding"); }
public void destroy() { config = null; targetEncoding = null; }
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)srequest; request.setCharacterEncoding(targetEncoding); chain.doFilter(srequest, sresponse); }}
配置:在web.xml中添加 <filter> <filter-name>encodingFilter</filter-name> <filter-class>xx.xx.xx.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> <init-param> <param-name>useragents</param-name> <param-value>Mac</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>