Frage

Ich habe Base64-codierte Zeichenfolge (mit zwei Dollar-Zeichen, es ist also nicht eine gemeinsame base64 string)

Das Problem: Base64.decode64 (oder .unpack ( "m")) decodiert es auf meinem lokalen Rechner (Rubin 1.8.6) ganz gut, aber mit Ruby 1.8.5 (der Version von Heroku verwendet wird) es doesn‘ t Arbeit

Irgendwelche Ideen?

Bearbeiten

ich habe:

$$ YTo1OntzOjM6Im1pZCI7czo3OiI3MTE5Njg3IjtzOjQ6Im5hbWUiO3M6MjE6IkthbnllIFdlc3QgLSBTdHJvbmd lciI7czo0OiJsaW5rIjtzOjQ4OiJodHRwOi8vd3d3LmVhc3kxNS5jb20vMDIgU3Ryb25nZXIgKFNuaXBwZXQpMS5tcD MiO3M6OToiX3BsYXl0aW1lIjtzOjU6IjgzMjAwIjtzOjg6Il9uZXh0aWRzIjtzOjEzNDoiMjc1ODE0MDYsMjc0MDE1 NzAsMjI1MTU0MDMsMTU1ODM2NjYsMTYzMTUzMzksMjgwNDY5MTUsMzAzOTMxODksMzUyMDAyMTMsMjIwNTE1MzAsMj c1NTg1MTQsMTM3ODkyNTYsMTk4MTY5OTgsMzA0NzI4MDEsMTUyNTk5NzksMTg5OTkxMzciO30 =

I successed es bei der Decodierung mit '...'. Entpacken ( "m") lokal, aber nicht auf dem Heroku Server (Rubin 1.8.5, vielleicht die Ruby-Version es ist nicht das Problem)

War es hilfreich?

Lösung

Das Dollarzeichen ist nicht Teil der Base64-Spezifikation.

Sie einfach abzustreifen die führenden $$ vor dem Auspacken:

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

Um alle nicht-Base64-Zeichen Streifen, emuliert neue (Rubin 1.8.6) Verhalten,

  

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

Rubin 1.8.6 wird alle nicht-Base64 Symbole ignorieren (einschließlich der $) innerhalb der Zeichenkette zu dekodieren, während 1.8.5 der Verarbeitung bei dem ersten solchen Charakter stoppen (pack.c in der Ruby Quelle sehen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top