PHP学习 base64_encode +号变空格
Posted 闲人五衰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP学习 base64_encode +号变空格相关的知识,希望对你有一定的参考价值。
在进行base64编码解码的时候出现的+号在通过html由后台php->get读取时会被自动替换成空格,造成乱码的问题
经过查证这并不是echo显示出错而是客观存在的
原因摘自:http://blog.csdn.net/wang0928007/article/details/7429568
“加号(+)是BASE64编码的一部分,而加号在QueryString中被当成是空格。 因此,当一个含有BASE64编码的字符串直接作为URL的一部分时,如果其中含有加号,则使用QueryString读取时,再使用BASE64解码就会发生错误。 解决的办法有两个:一是使用BASE64的字符串作为URL的一部分是,使用UrlEncode一类的函数进行编码;二是在接收BASE64字符串后,使用ReplaceAll将字符串中的空格替换成加号,然后再解码。 "
//解决base64转码过程中+变成空格的问题 $key = str_replace(‘ ‘,‘+‘,$this->input->get(‘key‘)); $key = base64_decode($key);
程序中采用直接替换的方式,但不能避免别的符号出现错误,目前似乎只有+号会出错?待排查
以上是关于PHP学习 base64_encode +号变空格的主要内容,如果未能解决你的问题,请参考以下文章
[PHP内核]PHP内核学习------回答PHP的字符串解析特性Bypass([空格被解析为_,[[只将第一个[解析为_)
[PHP内核]PHP内核学习------回答PHP的字符串解析特性Bypass([空格被解析为_,[[只将第一个[解析为_)
[PHP内核]PHP内核学习------回答PHP的字符串解析特性Bypass([空格被解析为_,[[只将第一个[解析为_)