记一次%转义引发的血案

周五的下午,撸完了代码,默默的憧憬周末的生活,突然前端告诉我,接口又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

好了,继续憧憬周末

原文地址:https://www.cnblogs.com/xmzJava/p/7346767.html