开发过程中遇到一个问题,就是在用GET方法请求接口的时候,传入的参数值中,+号会被转化为空格,传给后台。

传入的参数是:“aaa++++bbb–@%&”,被url编码和解码后,传入后台就变成了截图所示。加号全部被转为空格。截图的请求方式之所以展示为post,是因为前端做了接口拦截设置,把所有的GET请求转为了POST请求。

后来把请求方式改为post,content-type设置为xxx-form-urlencoded,+号依然被转化为空格传给了后台,如下方截图所示

刚开始以为只是content-type:xxx-form-urlencoded导致的。
后来在chrome的url搜索栏输入www.baidu.com/aa+bb?cc=e+f然后按enter键看了下接口请求,如下图

最终的解决方案是:后台修改了传参类型,前台用POST,改为JSON传参。

后面查了一些资料。以下是查询所得:

对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。

例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。

又如,**Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。**否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。

Url编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。

哪些字符需要编码?
**RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。**RFC3986文档对Url的编解码问题做出了详细的建议,指出了哪些字符需要被编码才不会引起Url语义的转变,以及对为什么这些字符需要编码做出了相应的解释。

US-ASCII字符集中没有对应的可打印字符:Url中只允许使用可打印字符。US-ASCII码中的10-7F字节全都表示控制字符,这些字符都不能直接出现在Url中。同时,对于80-FF字节(ISO-8859-1),由于已经超出了US-ACII定义的字节范围,因此也不可以放在Url中。

保留字符:Url可以划分成若干个组件,协议、主机、路径等。有一些字符(

url传参的编码与解码相关推荐

  1. url传参参数编码的解码问题

    JS中encodeURIComponent(URL)编码与decodeURIComponent(URL)解码详解 (1)encodeURIComponent(url)函数 定义和用法 encodeUR ...

  2. php解析url编码,php对URL传参进行编码和解码解析

    1. 对URL 传递的参数进行编码 使用URL 传递参数数据,就是在 URL地址后面加上适当的参数.URL 实体对这些参数进行处理.其使用的方式如下面的格式: 显而易见,这种方法将会把参数暴露出来,安 ...

  3. vue前后端aes url传参解密再解base64编码

    需求:我们公司做机票订购服务,有自己的平台的订单,也有第三方网站向我们网站导入的用户订单,第三方导入的是通过url传参的方式导入.url会携带用户的相关信息. url里面的参数是经过aes加密和bas ...

  4. get请求URL传参url编码工具类

    get请求URL传参需要 进行url编码,只能编码参数,不能整个编码URL package com.bonc.bxm.security.common.util;import lombok.extern ...

  5. URL传参时 从URL中获取中文参数的方法

    利用url传参时如果url中的参数是中文时因为编码类型不同在页面中获取会出现乱码 使用此方法能获取url中的参数值 并解决乱码问题 调用时直接 GetUrlByParamName("参数名& ...

  6. html页面url中文传值乱码,URL传参时,中文参数乱码的解决方法

    URL传参时,中文参数乱码的解决: 今天在工作中遇到了这样的一个问题,在页面之间跳转时,我将中文的参数放入到url中,使用location进行跳转传参,但是发现接收到的参数值是乱码.我的代码是这样写的 ...

  7. C# Url传参中文乱码

    项目用到ReportViewer报表,里面的参数是通过url传参给报表,参数中含有中文字符,页面显示这些参数时发现中文部分都乱码,英文字符和数字都显示正常,于是便搜寻解决之法,最终得以解决.方法如下: ...

  8. URL网址中的编码与解码问题

    一.中文编码有三种形式 1.utf-8编码        2.gbk编码        3.gb2312编码 这三种编码方式对汉字编码的组数不一样,其中2和3,一个汉字对应的都是两组%XX,而1对应的 ...

  9. Java URL传参中文乱码问题

    2019独角兽企业重金招聘Python工程师标准>>> 我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题. URL传参所使用的编码为服务器 ...

  10. 关于url传参中文乱码问题

    之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/c ...

最新文章

  1. Linux安装Apache报错:Cannot find a valid baseurl for repo: base/7/x86_64解决方案
  2. 关于js中window.location.href、location.href 等如何跳转
  3. IOS学习动画二之 Core Animation (3)
  4. Tomcat正常启动,一访问就报错
  5. 2月份Web服务器份额:排名不变 仅Microsoft份额上扬
  6. 【HDU - 1863】 畅通工程(并查集+最小生成树)
  7. 每日英语:Lighting: Twigs Shine in Home Decor
  8. Nodejs学习笔记(六)——Mysql模块
  9. 团队协作项目——SVN的使用
  10. Eclipse用法和技巧十八:减少不必要的输入
  11. SpringMVC 中 @RequestBody 接收Json数组对象及对象参数中有数组参数
  12. docucentre s2011默认登录密码
  13. python scipy.signal 包络_python scipy signal.freqz用法及代码示例
  14. 专业的WiFi检测工具有哪些?如何解决wifi信号不好?
  15. AutoHotKey实现百度云批量离线下载工具
  16. CentOS7安装Oracle 11gR2详细记录整理
  17. cpu空载50度_让电脑拥有一个“冷静”空间:九州风神玄冰50+堡垒240水冷套
  18. 3D旋转相册炫酷js特效
  19. 两万字深度讲解系统设计!超详细解析!面试复习必备!
  20. Word使用中遇到的一些错误与解决办法,附2016版本office的安装方法

热门文章

  1. 【Android 逆向】Android 逆向通用工具开发 ( PC 端工具 hacktool 启动 main 函数分析 | hacktool 工程中的核心类 HackCommand 分析 )
  2. 小白入门必学——时间复杂度
  3. 《Oracle Exadata云服务官方指南》之 Oracle Database Exadata 云服务
  4. paypal 支付接口 php,PHP整合PayPal支付
  5. stm32 RS485 SP3485
  6. 不动产 - 权属性质代码
  7. 分计算iv值_【美股期權】多高的IV才算高?理解IV percentile
  8. lisp6 暖通cad_AutoCAD超强小工具(ARKtools)说明
  9. 合并txt文件的几个方法
  10. 工程施工工地进度监控带天气经纬度相机(监理日志不再难写)