get请求时 参数中+号变空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了get请求时 参数中+号变空格相关的知识,希望对你有一定的参考价值。

参考技术A 在进行非对称加解密的过程中,加过密的数据通过GET接受之后+号 会变成空格
然后发现get参数通过base64
加号(+)是BASE64编码的一部分,而加号在QueryString中被当成是空格。 因此,当一个含有BASE64编码的字符串直接作为URL的一部分时,如果其中含有加号,则使用QueryString读取时,再使用BASE64解码就会发生错误

解决方式一:
str_replace(" ", "+",$data)
解决方法二:
改用POST提交

如何解决Http请求参数中加号变空格问题

http请求参数中英文加号是要进行url编码的,因为在http请求参数中加号就是空格的替代字符啊(因为空格对于http协议规定的url来说是一个非法字符),所以当你的请求参数中出现了一个加号,就会一律理解成一个空格。解决的方法就是对加号进行编码转换,url编码的方法是将需要转换的字符,转换成英文百分号加字符的十六进制形式,比如空格除了加号表示以外也可以表示成%20,20就是空格的十六进制形式。 参考技术A 错误原因:
我没有深究原因,宽泛的说,就是在传输前后过程中,经历的几次编码和解码标准不同,导致加号、空格等字符的错误。
简单的解决方法:
遇到这种情况时,一种快速的解决方法是: 把参数中所有的加号“+”,替换为“%2B”即可
(可能这种方法并不好,应该可以采用传递前对数据进行某格式的encode,获取数据时进行decode即可)

以上是关于get请求时 参数中+号变空格的主要内容,如果未能解决你的问题,请参考以下文章

get请求时特殊符号处理

GET 请求 + 号被替换成空格的问题解决方案

在iOS中通过GET方法发送http请求,如果参数中有中文或者空格的时候应该怎么办?

PHP学习 base64_encode +号变空格

http get请求时参数被转码的问题

怎么处理get传递的参数带有