1、以post方式提交
以post方式提交的请求参数中文乱码问题可以通过后端的编码过滤器解决。
可以直接使用springMVC中的编码过滤器,只需在web.xml中添加过滤器的配置即可。
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
也可以自己写一个编码过滤器:
package filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "EncodeFilter",urlPatterns = "/*")
public class EncodeFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
2、以get方式提交
在后端接收请求后,使用URLEncoder.encode()方法将请求参数转码成“UTF-8”,同时Tomcat服务器的编码格式也要设置为“UTF-8”。
request.setAttribute("keyword", URLEncoder.encode(keyword,"utf-8"));
Tomcat 服务器编码格式设置,在tomcat的conf目录下server.xml文件中