【问题标题】:Why are `=`, `&` and `?` not altered in `urlsafe_encode64`?为什么 `=`、`&` 和 `?` 在 `urlsafe_encode64` 中没有改变?
【发布时间】:2026-02-14 21:25:01
【问题描述】:

Base64.urlsafe_encode64+/ 转换为-_,但保留=&? 原样。我的理解是=用作参数键和值之间的分隔符,如果在url中使用会引起冲突。此外,&? 用于分隔参数。为什么这在 base 64 中不是问题?为什么 =&? 未转换?

编辑我似乎一直很困惑,但现在我明白了。 =&? 作为 url 是安全的,但在 url 的每个组件(路径、参数键、参数值)中使用是不安全的。那么,是否有一种概念/方法可以使字符串安全地出现在 url 的这些组件中(路径、参数键、参数值)?如果有这样的概念,它叫什么(即“url安全”之类的东西,但不完全是)?

【问题讨论】:

  • JavaScript 将其称为 URI 组件,如果有帮助的话。

标签: ruby url encode


【解决方案1】:

我想你刚刚回答了你的问题。看看数据链接:

data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7

等号是允许的。要转义等号,请将结果传递给CGI::escape

【讨论】: