记一次%转义引发的血案
周五的下午,撸完了代码,默默的憧憬周末的生活,突然前端告诉我,接口又404了
检查之后,发现是对象接收时间格式的时候出错,默默的做了转换,发现soeasy,
突然我发现数据库的字段竟然乱码了
完成数底于周任务80%,扣除月绩效20%
原本应该是要这样的,结果百分号全部乱码了,刚开始还以为前后端之间的字符类型不对,导致文本格式出现乱码,进到web.xml后,发现我的filter确实已经实现了转码
不信你们看
<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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这样的化有可能是前端规定的字符格式有可能没有指定
询问之后发现前端默认都是UTF-8
这时,突然想起了浏览器的URL转义,
特殊符号 十六进制值 + 转义符为 %2B 空格 转义符为 + 或 %20 / 转义符为 %2F ? 转义符为 %3F % 转义符为 %25 # 转义符为 %23 & 转义符为 %26 = 转义符为 %3D
%在浏览器中就是个转义字符,所以他会默认的把
%,扣除月绩效20 转义
由于没有规定这样的转义字符,所以这堆内容会呈现乱码的形式,
解决的办法就是把每个%都统一的变成%25
好了,继续憧憬周末