Die eingebaute Base64-Bibliothek in Ruby fügt einige '\ n' hinzu. Ich kann den Grund nicht herausfinden. Für dieses spezielle Beispiel:
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'base64'
=> true
irb(main):003:0> str = "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
=> "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
irb(main):004:0> Base64.encode64(str)
=> "MTExMC0tYWQ2Y2EwYjA2ZTFmYmViN2U2NTE4YTA0MThhNzNhNmUwNGE2NzA1\nNA==\n"
Die \ n befinden sich an der letzten und sechsten Position vom Ende. Der Decoder (Base64.decode64) gibt den alten String perfekt zurück. Seltsamerweise fügen diese \ n der codierten Zeichenfolge keinen Wert hinzu. Wenn ich die Zeilenumbrüche aus der Ausgabezeichenfolge entferne, decodiert der Decoder sie erneut perfekt.
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
Darüber hinaus habe ich eine andere JS-Bibliothek verwendet, um die base64-codierte Ausgabe derselben Eingabezeichenfolge zu erstellen. Die Ausgabe erfolgt ohne die \ n.
Ist das ein Fehler oder etwas anderes? Hat sich schon jemand mit diesem Problem befasst?
Zu Ihrer Information,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]