我有base64编码串(具有两个美元符号,所以这是不常见的base64字符串)

在问题:Base64.decode64(或.unpack(“M”))对其进行解码就好我的本地机器(红宝石1.8.6)上,但与红宝石1.8.5(由Heroku的使用的版本)没有关系”吨工作

任何想法?

修改

我有:

$$ YTo1OntzOjM6Im1pZCI7czo3OiI3MTE5Njg3IjtzOjQ6Im5hbWUiO3M6MjE6IkthbnllIFdlc3QgLSBTdHJvbmd lciI7czo0OiJsaW5rIjtzOjQ4OiJodHRwOi8vd3d3LmVhc3kxNS5jb20vMDIgU3Ryb25nZXIgKFNuaXBwZXQpMS5tcD MiO3M6OToiX3BsYXl0aW1lIjtzOjU6IjgzMjAwIjtzOjg6Il9uZXh0aWRzIjtzOjEzNDoiMjc1ODE0MDYsMjc0MDE1 NzAsMjI1MTU0MDMsMTU1ODM2NjYsMTYzMTUzMzksMjgwNDY5MTUsMzAzOTMxODksMzUyMDAyMTMsMjIwNTE1MzAsMj c1NTg1MTQsMTM3ODkyNTYsMTk4MTY5OTgsMzA0NzI4MDEsMTUyNTk5NzksMTg5OTkxMzciO30 =

我与“...”对其进行解码successed。解压(‘M’)在本地而不是Heroku的服务器上(红宝石1.8.5,也许红宝石版本,这不是问题)

有帮助吗?

解决方案

美元符号不是Base64的说明书的一部分。

只需拆包之前剥去主导$$

str.sub(/^\$*/, '').unpack('m')

要去除所有非Base64的字符,仿真新(红宝石1.8.6)的行为,

  

str.gsub(/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+\/]/, '').unpack('m')

红宝石1.8.6将忽略所有非Base64的符号(包括$)里面的字符串进行解码,而1.8.5将在第一个这样的字符停止处理(参见pack.c在Ruby源。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top