|
在进行jsp和servlet的开发时,很有可能遇到出现了中文乱码问题,现在我们来看看笔者是如何解决的,他也是用了许多方法,发现还是解决不了。最后用了过滤器,才算终结。
此方法总结如下:在jsp页面中使用<%@ page pageEncoding="GB2312"%> ,这里的pageEncoding是GB2312,那么我们在过滤器web.xml中所使用的<param-value>GB2312</param-value>也为GB2312。总之一条:就是上述两者一致即可,比如同为UTF-8
将过滤器的java代码和web.xml的配置写
//--------java代码部分:CharsetFilter .java
package com;
import java.io.IOException;
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;
public class CharsetFilter implements Filter { private String charset = "GB2312";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain arg2) throws IOException, ServletException { request.setCharacterEncoding(charset); arg2.doFilter(request, response); }
public void init(FilterConfig arg0) throws ServletException { charset = arg0.getInitParameter("charset"); System.out.println("字符过滤器开启,当前状态:"+charset); } }
//--------web.xml部分(以下部分可以直接复制粘贴到WEB.XML下)
<filter> <filter-name>CharsetFilter</filter-name> <filter-class>com.CharsetFilter</filter-class> <init-param> <param-name>charset</param-name> <param-value>GB2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
|