Thư viện Base64 sẵn có trong Ruby đang thêm một số '\ n'. Tôi không thể tìm ra lý do. Đối với ví dụ đặc biệt này:
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 nằm ở vị trí cuối cùng và thứ 6 từ cuối. Bộ giải mã (Base64.decode64) trả lại chuỗi cũ một cách hoàn hảo. Điều kỳ lạ là, những thứ này không thêm bất kỳ giá trị nào vào chuỗi được mã hóa. Khi tôi loại bỏ các dòng mới khỏi chuỗi đầu ra, bộ giải mã sẽ giải mã lại một cách hoàn hảo.
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
Thêm vào đó, tôi đã sử dụng một thư viện JS khác để tạo đầu ra được mã hóa base64 của cùng một chuỗi đầu vào, đầu ra không có \ n's.
Đây có phải là một lỗi hoặc bất cứ điều gì khác? Có ai phải đối mặt với vấn đề này trước đây?
FYI,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]