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);
        

程序中采用直接替换的方式,但不能避免别的符号出现错误,目前似乎只有+号会出错?待排查

时间: 2024-10-26 19:44:35

PHP学习 base64_encode +号变空格的相关文章

【转】vim - tab变空格

vim中将tab自动转换成空格 在vim中,有时需要将tab转换成space.使用ret命令(replace tab).[range]ret[ab]! [new-tabstop] 举例:将第一行到文件尾的tab转换成space,每个tab用4个space替代.:set expandtab:%ret! 4如果没有给定4,则用当前的tab宽度设定替换为space. 其它相关命令::set tabstop=4        设定tab宽度为4个字符:set shiftwidth=4     设定自动缩

转!!URL 传+号到后台变空格问题解决方案

网上很多解决方法,但是前提是get请求(或者是post请求后面追加的参数),让我试了很久(我是post),没成功!引以为戒!! 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了. 解决方法如下: 方法一.修改客户端,将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了. 方法二.修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况. 例子: String a = reuqe

URL 传+号到后台变空格问题解决方案

今天巧合遇到这个问题,下面是网上找的解决方案. 原文:http://blog.sina.com.cn/s/blog_a0949eec01010xta.html 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了. 解决方法如下: 方法一.修改客户端,将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了. 方法二.修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况. 例子:

推神:如何让你的公众号变得性感起来?(转)

文如其人,号如其人,公司号也是一样,只有人格化才能变得性感.我说的性感不是说排版要多酷炫.可爱或者是放几张让人产生本能反应的图,而是说内容要有温度.有态度.有调性.有逼格.有故事.有才情.有内涵.我的要求并不高,我的号不就这样吗?不许说我不要脸,只能我自己这么说我自己. 有人问我:“推神这个订阅号是你个人的还是作为公司号运营?”怎么说呢?我的公众号当然是我的啦,同时也是公司的咯,但终究还是属于我的啊.如果说有一天我脱离公司了,还真说不定哪天脑子被烧坏了果断辞职云游四方甚至是隐居山林的时候,当我不

零基础学习java:变 量(一)

一.变量的概念: (1)内存中的一个存储区域 (2)该区域有自己的名称(变量名)和类型(数据类型) (3)Java中每个变量必须先声明,后使用 (4)该区域的数据可以在同一类型范围内不断变化 使用变量注意: (1)变量的作用域:一对{ }之间有效 (2)初始化值 定义变量的格式:数据类型    变量名  =  初始化值 二.变量的分类--按数据类型 对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间. 1.整数类型:byte.short.int.long Java各整数类

UltraEdit 除去行首的行号和空格

我们在复制代码的时候,经常会发生这种事情. 例如:如下文件(lpc17xx_libcfg.h) 00001 /***********************************************************************/ 00020 #ifndef LPC17XX_LIBCFG_H_ 00021 #define LPC17XX_LIBCFG_H_ 00022 00023 #include "lpc_types.h" 00024 00025 00026

C# base64图片数据传送加号(+)变空格问题

今天遇到一个问题,将图片的base64数据转发,客户收到base64数据后生成图片失真. 通过日志监控,对比客户收到的数据和我发出的数据,最终发现客户base64数据中原本应该显示为加号("+")的地方都被空格替换掉了.去问度娘,有篇帖子说在发送数据之前要进行预处理,将加号替换成 %2B .虽不知什么原因,但是处理之后客户收到的base64数据和发送的数据就一致了. 附上原文:https://social.msdn.microsoft.com/forums/azure/fr-fr/5b

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

一个加密串,通过url传过来后怎么也解密不了. 原串: h1tQYMmnx7jdvowi9KnaEM5dHfamJ+rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY= urlencode后的串: h1tQYMmnx7jdvowi9KnaEM5dHfamJ%2brbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQ

STL学习笔记(变序性算法)

变序性算法改变元素的次序,但不改变元素值. 这些算法不能用于关联式容器,因为在关联式容器中,元素有一定的次序,不能随意变动. 逆转元素次序 void reverse(BidirectionalIterator beg,BidirectionalIterator end) OutputIterator reverse_copy(BidirectionalIterator sourceBeg,BidirectionalIterator sourceEnd, OutputIterator destBe