事件起因:
我在页面中要实现一个模糊查询,我用参数的序列化然后把参数回传到后端查询,一直显示无数据,一看日志文件才发现:传过来的参数(作为查询的参数)却是???
,说明中文乱码了
简单分析分析了一下:
传的参数没问题,检查了控制器和各种配置文件都没发现问题,也配置了编码过滤器,但是问题还是没解决,最后一只一直的尝试,发现:是由于没有指定Tomcat服务器的编码而导致的乱码
- 首先分析出现乱码的原因:
出现乱码很可能是由于我们的后端的编码和前端的编码不一致.可分为多种情况:
- 前端要接受后端的数据,但是前端接收数据时,没有设置解码方式,那么就使用默认的解码方式,那么就会发生错误
- 后端要接受前端的数据,但是后端接收数据时,没有设置解码方式,那么就使用默认的解码方式,就发送乱码问题
不论是get方式请求数据或者post方式请求数据,我们都需要保证数据的编码和解码的方式保证统一
这里推荐几种我在学习路上踩的一些坑的解决方式:
1.设置Tomcat的servlet.xml的编码方式
让服务器的编码方式和写代码的编码方式尽量保持统一
默认情bai况下,tomcat使用的的编码方式:iso8859-1
修改tomcat下的conf/server.xml文件
找到du如下代码:
这段zhi代码规定了Tomcat监听HTTP请求的端口号dao等信息。
可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。
修改完成后:
2.配置编码过滤器
让我们的代码的编码方式统一,避免编码不统一的情况
<filter>
<filter-name>CharacterEncodeingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter&l