记录一次在 PHP 中 base64 解码出现乱码

记录一次在 PHP 中 base64 解码出现乱码

PHP 11小时前 8 0

最近遇到一个 base64 解码在 PHP 出现异常,使用在线工具解码也有问题,研究一下解决方案

1. 确认字符编码

mb_internal_encoding('UTF-8');

2. 检查Base64字符串的完整性和格式

function addBase64Padding($base64Str) {
    $len = strlen($base64Str);
    $padding = 4 - ($len % 4);
    if ($padding !== 4) {
        $base64Str .= str_repeat('=', $padding);
    }
    return $base64Str;
}

3. 处理 URL 安全的Base64 字符串

function convertUrlSafeBase64($base64Str) {
    // 将URL安全字符转换为标准Base64字符
    $base64Str = strtr($base64Str, '-_', '+/');
    // 添加填充符号
    $base64Str = addBase64Padding($base64Str);
    return $base64Str;
}

4. 调用

在 PHP 中使用 base64_decode() 函数解码 Base64 字符串。可以启用严格模式,确保只解码有效的 Base64 字符串

$base64Str = "YmFzZTY0U3Ry";
$standardBase64Str = convertUrlSafeBase64($base64Str);
$decodedStr = base64_decode($standardBase64Str, true); // true表示启用严格模式
echo $decodeedStr;

原文: http://yiqiao.me/articles/44/record-one-occurrence-of-garbled-code-during-base64-decoding-in-php

版权声明: 自由转载-非商用-非衍生-保持署名 (创意共享3.0许可证)