url传输中+转为%2B取到变空格的问题

Posted 河在谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了url传输中+转为%2B取到变空格的问题相关的知识,希望对你有一定的参考价值。

一个加密串,通过url传过来后怎么也解密不了。

原串:

h1tQYMmnx7jdvowi9KnaEM5dHfamJ+rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY=

 

urlencode后的串:

h1tQYMmnx7jdvowi9KnaEM5dHfamJ%2brbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx%2fv2j0KkjHvrY%3d

 

通过$_GET收到的串:

h1tQYMmnx7jdvowi9KnaEM5dHfamJ rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY=

对比发现,+转成%2B,收到的时候变成了空格。

 

解决方法:

传之前做urlencode两次:urlencode(urlencode($str))

两次urlencode后的串变成了:

h1tQYMmnx7jdvowi9KnaEM5dHfamJ%252BrbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvZuUePw%252F26RAv2j0KkjHvrY%253D

奇葩的是,通过thinkphp的$_GET收到的串不用decode,直接就是正常串:

h1tQYMmnx7jdvowi9KnaEM5dHfamJ+rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY=

 

其它系统要decode一次。。。

 

以上是关于url传输中+转为%2B取到变空格的问题的主要内容,如果未能解决你的问题,请参考以下文章

解决base64通过http传输后+变空格的问题

URL中%2F,%2B等特殊字符

BASE64编码的字符进行URL传输丢失特殊字符的问题

QueryString中的加号变成空格解决方法

关于多条数据转为json格式单次传输的问题 2017.05.27

[踩坑]url传参+变空格