post请求乱码解决
方式一
在web.xml中配置过滤器。声明过滤器时添加初始化参数(常用)
方式二
自定义Filter解决post请求中文乱码
1.编写自定义filter类
import javax.servlet.*;
import java.io.IOException;
/**
* 自定义filter
*/
public class MyCharacterEncodingFilter implements Filter {
private String encoding;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}
/**
* doFilter():相当于Servlet的service()
* @param servletRequest 是HttpServletRequest的父接口
* @param servletResponse 是HttpServletResponse的父接口
* @param filterChain 过滤链:
* 请求会首先进入过滤器。
* filterChain可以:
* 1.对请求进行加工
* 2.决定请求是否可以放行
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//1.解决中文乱码
servletRequest.setCharacterEncoding(encoding);
servletResponse.setContentType("text/html;charset=UTF-8");
//2.放行请求:写上就是放行(不写就是不放行)
filterChain.doFilter(servletRequest,servletResponse);
}
}
2.在web.xml中配置filter
提示:若报红的话可以修改下web.xml头(将下述代码粘上去即可)
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
get请求方式乱码解决
方法一
将参数使用ISO-8859-1编码,再使用utf-8进行解码
//byte[] bytes = motto.getBytes("iso-8859-1"); //使用iso-8859-1编码
//motto = new String(bytes"utf-8"); //使用utf-8解码
//合并了:相当于上面两步骤
motto = new String(motto.getBytes("iso-8859-1"),"utf-8");
方法二
修改tomcat7的默认uri编码为utf-8
Tomcat8之后默认的uri编码就是utf-8,之前的是ISO-8859-1