La bibliothèque intégrée Base64 de Ruby ajoute des \ n. Je suis incapable de trouver la raison. Pour cet exemple particulier:Strange n dans la chaîne encodée en base64 dans 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"
Les \ n sont à la dernière et sixième position à partir de la fin. Le décodeur (Base64.decode64) renvoie parfaitement l'ancienne chaîne. Chose étrange, ces \ n n'ajoutent aucune valeur à la chaîne codée. Lorsque je supprime les nouvelles lignes de la chaîne de sortie, le décodeur le décode à nouveau parfaitement.
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
Plus de cela, j'ai utilisé une autre bibliothèque JS pour produire base64 sortie codée de la même chaîne d'entrée, la sortie est sans que le \ n.
Est-ce un bug ou autre chose? Est-ce que quelqu'un a déjà fait face à ce problème?
Pour votre information,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Il semble que depuis que j'ai écrit cette réponse, il y a maintenant 'strict_encode64()' qui n'ajoute apparemment pas de saut de ligne. –
Tellement stupide! Pourquoi tu me fais ça, Ruby? –
Cela me tue! Juste perdu une heure sans raison valable! –