解决Tomcat获取的请求参数中文乱码问题
解决Tomcat获取的请求参数中文乱码问题,通常需要设置Tomcat的请求编码和响应编码。以下是解决方案:
- 修改Tomcat的
server.xml
配置文件,设置Connector的URIEncoding
属性为UTF-8
。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
- 如果是POST请求中文乱码,确保请求头的
Content-Type
设置为application/x-www-form-urlencoded; charset=UTF-8
,并且在处理请求前设置请求体的编码为UTF-8
。
request.setCharacterEncoding("UTF-8");
- 对于响应中文乱码,确保设置响应头的
Content-Type
为text/html; charset=UTF-8
,并设置响应编码为UTF-8
。
response.setContentType("text/html; charset=UTF-8");
- 如果是通过Filter处理编码,可以在Filter中设置请求和响应编码。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletRequest.setCharacterEncoding("UTF-8");
httpServletResponse.setContentType("text/html; charset=UTF-8");
chain.doFilter(request, response);
}
确保以上设置在请求处理之前完成,以避免乱码问题。
评论已关闭