Domanda

Ho una stringa con codifica base64 (con due segni di dollaro, quindi non è una stringa base64 comune)

Il problema:Base64.decode64 (o .unpack("m")) lo decodifica perfettamente sul mio computer locale (Ruby 1.8.6), ma con Ruby 1.8.5 (la versione utilizzata da Heroku) non funziona

Qualche idea ?

modificare:

Io ho :

$$YTo1OntzOjM6Im1pZCI7czo3OiI3MTE5Njg3IjtzOjQ6Im5hbWUiO3M6MjE6IkthbnllIFdlc3QgLSBTdHJvbmd lciI7czo0OiJsaW5rIjtzOjQ4OiJodHRwOi8vd3d3LmVhc3kxNS5jb20vMDIgU3Ryb25nZXIgKFNuaXBwZXQpMS5tcD MiO3M6OToiX3BsYXl0aW1lIjtzOjU6IjgzMjAwIjtzOjg6Il9uZXh0aWRzIjtzOjEzNDoiMjc1ODE0MDYsMjc0MDE1 NzAsMjI1MTU0MDMsMTU1ODM2NjYsMTYzMTUzMzksMjgwNDY5MTUsMzAzOTMxODksMzUyMDAyMTMsMjIwNTE1MzAsMj c1NTg1MTQsMTM3ODkyNTYsMTk4MTY5OTgsMzA0NzI4MDEsMTUyNTk5NzksMTg5OTkxMzciO30=

Sono riuscito a decodificarlo con '...'.unpack("m") localmente ma non sul server heroku (Ruby 1.8.5, forse la versione Ruby non è il problema)

È stato utile?

Soluzione

Il simbolo del dollaro non fa parte delle specifiche Base64.

Basta togliere la parte iniziale $$ prima di disimballare:

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

Per eliminare tutti i caratteri non Base64, emulando il nuovo comportamento (Ruby 1.8.6),

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

Ruby 1.8.6 ignorerà tutti i simboli non Base64 (incluso il $) all'interno della stringa da decodificare, mentre 1.8.5 interromperà l'elaborazione al primo di questi caratteri (vedi pack.c nella fonte Ruby.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top