La libreria Base64 incorporata in Ruby aggiunge alcuni '\ n. Non riesco a scoprire il motivo. Per questo esempio speciale:Strano n nella stringa codificata in Base64 in Ruby
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"
Gli \ n sono all'ultima e alla sesta posizione dalla fine. Il decodificatore (Base64.decode64) restituisce perfettamente la vecchia stringa. Stranamente, questi \ n non aggiungono alcun valore alla stringa codificata. Quando rimuovo i newline dalla stringa di output, il decodificatore lo decodifica di nuovo perfettamente.
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
più su questo, ho usato un un'altra libreria JS per produrre i base64 uscita della stessa stringa di input codificati, l'uscita viene senza il \ n del.
Si tratta di un bug o di qualsiasi altra cosa? Qualcuno ha affrontato questo problema prima?
FYI,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Sembra che da quando ho scritto questa risposta ora ci sia 'strict_encode64()' che apparentemente non aggiunge newline. –
Così stupido! Perché mi fai questo, Ruby? –
Questo mi stava uccidendo! Ho appena perso un'ora senza una buona ragione! –