zoukankan      html  css  js  c++  java
  • 记一次%转义引发的血案

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

    好了,继续憧憬周末

  • 相关阅读:
    腾讯云挂载文件服务器节点
    OpsManage 安装
    centos7 安装mysql
    vs code 新建vue项目
    Centos7 安装supervisor
    腾讯云Centos7 安装nginx
    django 生成pdf
    VM安装虚拟机
    ACM/ICPC 之 Floyd练习六道(ZOJ2027-POJ2253-POJ2472-POJ1125-POJ1603-POJ2607)
    ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)
  • 原文地址:https://www.cnblogs.com/xmzJava/p/7346767.html
Copyright © 2011-2022 走看看