为什么ruby Base64编码64在编码字符串的末尾添加一行新行



我正在使用第三方集成,这需要将我的有效负载编码为base64格式。我用Rails来做这个

Base64.encode64("No way") # output: "Tm8gd2F5n"

与我合作过的大多数第三方对此没有任何问题,但也有少数人在使用\n解码编码值时遇到问题。面对这个问题后,我发现了另一个版本的base64编码,称为strict_encode64

Base64.strict_encode64("No way") # output: "Tm8gd2F5"

这解决了问题。

我想知道为什么将\n添加到编码字符串中。

encode64在引擎盖下使用Array#pack。它使用了"m"指令,根据文档,该指令有一个相当模糊的注释"m";如果计数为0,则不添加换行,参见RFC 4648〃;。如果计数>0,然后添加新行。我看过RFC 4648,找不到任何关于它的内容,但我猜它一定在某个地方。

如果这些都没有帮助,我很抱歉。在这上面掉进了兔子洞,但也许里面有一些有用的碎屑。

Edit:Python似乎也这样做,而且似乎是经过深思熟虑的(在他们的单元测试中指定(。所以这看起来更像是与RFC 4648(或者可能是RFC 2045(有关,但我一生都找不到任何一个RFC中提到它。

相关内容

  • 没有找到相关文章

最新更新