当前位置: 首页 > news >正文

记一次%转义引发的血案

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

相关文章:

  • 最好用的电脑软件商店_史上最实用电脑软件推荐,5款个个是良心,顶级黑科技...
  • mkdir 的详细使用说明
  • eclipse复制代码连接数据库404_(最新)Windows 系统 eclipse的下载和jre的安装。(2019.05.02)...
  • 无法定位软件包 docker-ce_秀刻短视频定位价值社交,从新出发
  • 【剑指Offer学习】【面试题21:包括min 函数的栈】
  • python模拟linux键盘上键和回车_自制获取短信验证码(python)
  • diff
  • listview bcb 行的颜色_兰山:庙后小学开展行孝道 知感恩教育活动
  • 为UiAutomatorViewer添加xpath支持
  • Java8 日期时间API
  • hp打印机怎么连接电脑_打印机连接电脑怎么做
  • pycharm怎么打开python shell-如何在PyCharm运行配置中运行shell脚本而不是python?
  • pdf exe如何提取pdf文件_PDF文件如何另存为
  • 苹果隐藏app_初探iOS 14主屏幕体验:小部件、App Library、隐藏应用等
  • 医保业务综合服务终端技术规范_25项社保医保业务随时办!三亚启用“政务便民服务站”自助机...
  • [PHP内核探索]PHP中的哈希表
  • JS 中的深拷贝与浅拷贝
  • canvas 绘制双线技巧
  • Create React App 使用
  • django开发-定时任务的使用
  • Docker下部署自己的LNMP工作环境
  • eclipse(luna)创建web工程
  • extract-text-webpack-plugin用法
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • interface和setter,getter
  • js继承的实现方法
  • MySQL几个简单SQL的优化
  • Promise面试题2实现异步串行执行
  • Protobuf3语言指南
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Vim Clutch | 面向脚踏板编程……
  • Vue.js-Day01
  • 关于extract.autodesk.io的一些说明
  • 基于axios的vue插件,让http请求更简单
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 我这样减少了26.5M Java内存!
  • 详解移动APP与web APP的区别
  • 由插件封装引出的一丢丢思考
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • $.ajax()
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (笔试题)合法字符串
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二开)Flink 修改源码拓展 SQL 语法
  • (四)linux文件内容查看
  • (一)SpringBoot3---尚硅谷总结
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 命令行参数包含应用程序路径吗?