求一个中文乱码的过滤器
求一个万能的中文乱码过滤器,用于java web工程。
要求能适用于web请求,安卓请求和IOS请求。最好所有的编码转换都在服务端进行,客户端不关心乱码的问题。 java?web 编码 安卓 ios 乱码
[解决办法]
直接修改tomcat的配置好了,如下:
文件:tomcat根目录\apache-tomcat-6.0.29\conf\server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
MyRequest myRequest = new MyRequest(req);
chain.doFilter(myRequest, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
public void destroy() {
// TODO Auto-generated method stub
}
}
class MyRequest extends HttpServletRequestWrapper {
private HttpServletRequest httpServletRequest;
public MyRequest(HttpServletRequest request) {
super(request);
this.httpServletRequest = request;
}
@Override
public String getParameter(String name) {
String value = httpServletRequest.getParameter(name);
try {
value = new String(value.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
}
