请求乱码问题
1.POST请求乱码问题,使用post请求提交数据(如表单数据),在服务器端获取中文乱码。
Tomcat10之后,request请求体当中的字符集默认就是UTF-8,不需要设置字符集,不会出现乱码问题。
Tomcat9前(包括9在内),如果前端请求体提交的是中文,后端获取请求体之后出现乱码,怎么解决这个乱码?执行以下代码。
// 设置请求体的字符集
// POST请求是在请求体中提交数据,因此以下方法是针对POST请求的乱码问题
request.setCharacterEncoding("UTF-8");以上方法必须在request.getParameter(String key);方法获取request中的数据之前设置字符集,否则还是会乱码。
2.GET请求乱码
// get请求发送的时候,数据是在请求行(就是网址)上提交的,不是在请求体当中提交的。
// get请求后,后端获取后到的数据乱码怎么解决?// 方案:修改CATALINA_HOME/conf/server.xml配置文件
// 设置URI(网址)的字符集为UTF-8,这样Tomcat服务器就会用UTF-8解码(原本是tomcat是GBK),跟浏览器的编码方式一致.
<Connector URIEncoding="UTF-8" />
// 注意:从Tomcat8之后,URIEncoding的默认值就是UTF-8,所以GET请求也没有乱码问题了。
响应乱码问题
// 响应乱码问题(服务器给浏览器发送数据乱码)
// 在Tomcat9之前(包括9),响应中文也是有乱码的,怎么解决这个响应的乱码?
response.setContentType("text/html;charset=UTF-8");
// 在Tomcat10之后,包括10在内,响应中文的时候就不在出现乱码问题了。以上代码就不需要设置UTF-8了。