在ruby 1.8.5中使用美元符号解码base64

在ruby 1.8.5中使用美元符号解码base64,ruby,base64,decode,Ruby,Base64,Decode,我有base64编码字符串(带有两个美元符号,因此它不是常见的base64字符串) 问题是:Base64.decode64(或.unpack(“m”)在我的本地机器(ruby 1.8.6)上可以很好地对其进行解码,但在ruby 1.8.5(Heroku使用的版本)上它不起作用 有什么想法吗 编辑: 我有: $$YTO1ONTZOJM6IM1PZCI7CZO3OI3MTE5NJITZOJ6IM5HBWUIO6MJE6IKTHBNLLIFDLC3GLSBTDHJVBMD LCII7CZO0OIJSA

我有base64编码字符串(带有两个美元符号,因此它不是常见的base64字符串)

问题是:Base64.decode64(或.unpack(“m”)在我的本地机器(ruby 1.8.6)上可以很好地对其进行解码,但在ruby 1.8.5(Heroku使用的版本)上它不起作用

有什么想法吗

编辑:

我有:

$$YTO1ONTZOJM6IM1PZCI7CZO3OI3MTE5NJITZOJ6IM5HBWUIO6MJE6IKTHBNLLIFDLC3GLSBTDHJVBMD LCII7CZO0OIJSAW5RIJTZOJQ4OIJODHRWOI8VD3D3LMVHC3KXNS5JB20VMDIG3RYB25NZXIGKFNUAXBWZQPMS5TCD MIO3MOTOIX3 BSYXL0AW1LIJTZOJU6IJGZMJAWIJTZOJG6IL9UZXH0AWRZIJZZZZONDOIMJC1ODEDYSMJC0MD1 NZSMJI1MDMSMTU1ODM2NJYSMTYZMTZKSMJGWNDY5MTUSMZOTMXODKSMZUYMDAYMTMSMJIWNTE1MZASMJ C1NTG1MTQSMTM3ODKYNTSTK4MTY5OTGSMZA0NZI4MDESMTUYNTK5NZKSMTG5OTKXMZCIO30=


我成功地用“…”对其进行了解码。在本地解包(“m”),但不是在heroku服务器上(ruby 1.8.5,可能是ruby版本,这不是问题)

美元符号不是Base64规范的一部分

在解包之前,只需剥去前导的
$

str.sub(/^\$*/, '').unpack('m')
要剥离所有非Base64字符,模拟新的(Ruby 1.8.6)行为

str.gsub(/[^abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz012456789\+\/]/,'')。解包('m')

Ruby 1.8.6将忽略要解码的字符串中的所有非Base64符号(包括
$
),而Ruby 1.8.5将在第一个这样的字符时停止处理(请参阅Ruby源代码中的
pack.c

str.gsub(/[^A-Za-z0-9+\/]/,'')会更方便吗?