Pregunta

Tengo codificado en base 64 de cuerda (con dos signos de dólar, así que no es una cadena base64 común)

El problema: Base64.decode64 (o .unpack ( "m")) decodifica bien en mi máquina local (rubí 1.8.6), pero con el rubí 1.8.5 (la versión usada por Heroku) que doesn' t trabajo

¿Alguna idea?

editar

Tengo:

$$ YTo1OntzOjM6Im1pZCI7czo3OiI3MTE5Njg3IjtzOjQ6Im5hbWUiO3M6MjE6IkthbnllIFdlc3QgLSBTdHJvbmd lciI7czo0OiJsaW5rIjtzOjQ4OiJodHRwOi8vd3d3LmVhc3kxNS5jb20vMDIgU3Ryb25nZXIgKFNuaXBwZXQpMS5tcD MiO3M6OToiX3BsYXl0aW1lIjtzOjU6IjgzMjAwIjtzOjg6Il9uZXh0aWRzIjtzOjEzNDoiMjc1ODE0MDYsMjc0MDE1 NzAsMjI1MTU0MDMsMTU1ODM2NjYsMTYzMTUzMzksMjgwNDY5MTUsMzAzOTMxODksMzUyMDAyMTMsMjIwNTE1MzAsMj c1NTg1MTQsMTM3ODkyNTYsMTk4MTY5OTgsMzA0NzI4MDEsMTUyNTk5NzksMTg5OTkxMzciO30 =

Me successed en la descodificación con '...'. Desempaquetar ( 'm') a nivel local, pero no en el servidor heroku (rubí 1.8.5, tal vez la versión de rubí no es la cuestión)

¿Fue útil?

Solución

El signo del dólar no es parte de la especificación base 64.

Simplemente pelar el $$ líder antes de desembalar:

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

Para despojar a todos los caracteres no Base64, emulando nuevo (rubí 1.8.6) comportamiento,

  

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

Rubí 1.8.6 ignorará todos los símbolos no Base64 (incluyendo el $) dentro de la cadena para decodificar, mientras que 1.8.5 dejará de procesar en la primera tal carácter (véase pack.c en la fuente Ruby.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top