Pustaka Base64 inbuilt di Ruby menambahkan beberapa '\ n's. Saya tidak dapat menemukan alasannya. Untuk contoh khusus ini:
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"
\ N berada pada posisi terakhir dan keenam dari ujung. Decoder (Base64.decode64) mengembalikan string yang lama dengan sempurna. Anehnya, ini tidak menambah nilai ke string yang dikodekan. Ketika saya menghapus baris baru dari string output, decoder menerjemahkannya lagi dengan sempurna.
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
Lebih dari ini, saya menggunakan pustaka JS lain untuk menghasilkan output disandikan base64 dari string input yang sama, output datang tanpa \ n's.
Apakah ini bug atau yang lainnya? Adakah yang pernah mengalami masalah ini sebelumnya?
FYI,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]