php - 为什么 base64_encode() 在结果中添加斜杠 "/"?

标签 php encoding base64

我正在对我的应用程序的 URL 后缀进行编码:

$url = 'subjects?_d=1';
echo base64_encode($url);

// Outputs
c3ViamVjdHM/X2Q9MQ==

注意“X2”之前的斜杠。

为什么会这样?我以为 base64 只输出 A-Z、0-9 和 '=' 作为填充?

最佳答案

没有。 Base64字母表包括A-Z、a-z、0-9和+/

如果您不关心对其他应用程序的可移植性,您可以替换它们。

参见:http://en.wikipedia.org/wiki/Base64#Variants_summary_table

你可以使用类似的东西来使用你自己的符号(用你想要的任何东西替换 -_ ,只要它不在 base64 基本字母表中,当然!)。

以下示例将普通的 base64 转换为 base64url as specified in RFC 4648 :

function base64url_encode($s) {
    return str_replace(array('+', '/'), array('-', '_'), base64_encode($s));
}

function base64url_decode($s) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $s));
}

关于php - 为什么 base64_encode() 在结果中添加斜杠 "/"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11449577/

相关文章:

php - PHP解析/语法错误;以及如何解决它们

PHP $_GET 和 $_POST 代码不工作

c# - 将 base64 从 javascript 传递到 C# 服务器函数

php - 特殊字符编码不正确

asp.net - Internet Explorer 9 中 URL 查询字符串值的 UTF-8 字符编码问题

git - powershell 调用和操作符 : set the output encoding

R 语料库弄乱了我的 UTF-8 编码文本

Java - 解码base64 - 非法base64字符1

用于流的 Java 缓冲 base64 编码器

php - 如何消除 WooCommerce 商店中产品类别之间的差距?