質問

私は(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文字を削除するには、

  

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

1.8.5最初、文字の処理を停止する一方、

ルビー1.8.6は、デコードするために文字列内($を含む)すべての非Base64でシンボルを無視する(Rubyのソースにpack.cを参照。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top