php获取加密url参数乱码问题处理

33 篇文章 0 订阅

1、base64_encode — 使用 MIME base64 对数据进行编码
为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
Base64-encoded 数据要比原始数据多占用 33% 左右的空间。
加密后字符串格式为:大小写字母、数字、“+”号、“=”号和“/”号,“=”号最多两个。
base64编码url问题(参照):

//url base64编码
function urlsafe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+','/','='),array('-','_',''),$data);
    return $data;
}
//url base64解码
function urlsafe_b64decode($string) {
    $data = str_replace(array('-','_'),array('+','/'),$string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data .= substr('====', $mod4);
    }
    return base64_decode($data);
}

2、base64_decode— 对使用 MIME base64 编码的数据进行解码
3、rawurlencode— 按照 RFC 3986 对 URL 进行编码
在 PHP 5.3.0 之前,rawurlencode 根据 » RFC 1738 来编码波浪线(~)。
字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数
4、rawurldecode— 对已编码的 URL 字符串进行解码
字符串中百分号(%)后跟两位十六进制数的序列都将被替换成原义字符。
5、urlencode— 编码 URL 字符串
此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 » RFC3896 编码
6、urldecode — 解码已编码的 URL 字符串
解码给出的已编码字符串中的任何 %##。 加号(’+’)被解码成一个空格字符
示例:

$str = 'xia22wd';
$str2 = 'aHFZONlN2gkONRbUKCcM5y9Y+e2UbXK70JurgX3XcSU=';
//base64_encode、base64decode加解密
$base_enstr = base64_encode($str);
$base_destr = base64_decode($base_enstr);
//urlencode、urldecode转换字符串
$urlen_str = urlencode($str2);
$urlde_str = urldecode($str2);
//rawurlencode、rawurldecode转换字符串
$rawurlen_str = rawurlencode($str2);
$rawurlde_str = rawurldecode($str2);

//输出各函数执行结果
echo '<b>str</b>: '.$str.'<br>';
echo '<b>base64_encode</b>: '.$base_enstr.'<br>';
echo '<b>base64_decode</b>: '.$base_destr.'<br>';
echo '<b>urlencode</b>: '.$urlen_str.'<br>';
echo '<b>urldecode</b>: '.$urlde_str.'<br>';
echo '<b>rawurlencode</b>: '.$rawurlen_str.'<br>';
echo '<b>rawurldecode</b>: '.$rawurlde_str.'<br>';

结果为:

str: xia22wd
base64_encode: eGlhMjJ3ZA==
base64_decode: xia22wd
urlencode: aHFZONlN2gkONRbUKCcM5y9Y%2Be2UbXK70JurgX3XcSU%3D
urldecode: aHFZONlN2gkONRbUKCcM5y9Y e2UbXK70JurgX3XcSU=
rawurlencode: aHFZONlN2gkONRbUKCcM5y9Y%2Be2UbXK70JurgX3XcSU%3D
rawurldecode: aHFZONlN2gkONRbUKCcM5y9Y+e2UbXK70JurgX3XcSU=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值