在java开发中,如果编码配置不统一,很容易出现中文乱码的情况,这里就记录下自己遇到的调用req.getParameter方法出现中文乱码,并解决这一情况的方法

注意修改以下几个地方

1.jsp页面中的编码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2.连接数据库时配置的编码

jdbc:mysql://localhost:3306/goods?useUnicode=true&characterEncoding=UTF-8
3.servlet的请求方法中设置编码

req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
4.tomcat安装目录下conf文件下server.xml中在以下位置添加代码

useBodyEncodingForURI="true" URIEncoding="UTF-8"

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
	       useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
两个参数的作用:

 useBodyEncodingForURI参数表示是否用request.setCharacterEncoding参数对URL提交的数据和表单中GET方式提交  的数据进行重新编码,在默认情况下,该参数为false。
 URIEncoding参数指定对所有GET方式请求进行统一的重新编码(解码)的编码。

URIEncoding和useBodyEncodingForURI区别是:
URIEncoding是对所有GET方式的请求的数据进行统一的重新编码,
而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码