ルビー1.8.5にドル記号でBASE64をデコード
質問
私は(2ドル記号と、それは一般的なbase64文字列ではありません)base64でエンコードされた文字列を持っています
問題:Base64.decode64(または.unpack(「M」))、それは私のローカルマシン(ルビー1.8.6)でうまくデコードしますが、「それはdoesnのルビー1.8.5(Herokuので使用されるバージョン)とトン作業
任意のアイデア?
の編集の
私が持っています:
$$ YTo1OntzOjM6Im1pZCI7czo3OiI3MTE5Njg3IjtzOjQ6Im5hbWUiO3M6MjE6IkthbnllIFdlc3QgLSBTdHJvbmd lciI7czo0OiJsaW5rIjtzOjQ4OiJodHRwOi8vd3d3LmVhc3kxNS5jb20vMDIgU3Ryb25nZXIgKFNuaXBwZXQpMS5tcD MiO3M6OToiX3BsYXl0aW1lIjtzOjU6IjgzMjAwIjtzOjg6Il9uZXh0aWRzIjtzOjEzNDoiMjc1ODE0MDYsMjc0MDE1 NzAsMjI1MTU0MDMsMTU1ODM2NjYsMTYzMTUzMzksMjgwNDY5MTUsMzAzOTMxODksMzUyMDAyMTMsMjIwNTE1MzAsMj c1NTg1MTQsMTM3ODkyNTYsMTk4MTY5OTgsMzA0NzI4MDEsMTUyNTk5NzksMTg5OTkxMzciO30 =
私は「...」それを復号化する際にsuccessed。解凍( 『M』)、ローカルではなく、Herokuのサーバ上(ルビー1.8.5、それは問題ではないです多分ルビーバージョン)
解決
ドル記号は、Base64の仕様の一部ではない。
単に開梱する前に大手$$
を取り除きます:
str.sub(/^\$*/, '').unpack('m')
新しい(Rubyの1.8.6)の動作をエミュレートし、すべての非のBase64文字を削除するには、
1.8.5最初、文字の処理を停止する一方、
str.gsub(/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+\/]/, '').unpack('m')
ルビー1.8.6は、デコードするために文字列内($
を含む)すべての非Base64でシンボルを無視する(Rubyのソースにpack.c
を参照。)