ไลบรารี Base64 inbuilt ใน Ruby กำลังเพิ่ม '\ n's บางอย่าง ฉันไม่สามารถหาเหตุผลได้ สำหรับตัวอย่างพิเศษนี้:
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 อยู่ที่ตำแหน่งสุดท้ายและอันดับที่ 6 จากจุดสิ้นสุด ตัวถอดรหัส (Base64.decode64) จะส่งคืนสตริงเก่าอย่างสมบูรณ์แบบ สิ่งที่แปลกคือ \ n เหล่านี้ไม่ได้เพิ่มค่าใด ๆ กับสตริงที่เข้ารหัส เมื่อฉันลบบรรทัดใหม่ออกจากสายอักขระตัวถอดรหัสถอดรหัสมันอีกครั้งอย่างสมบูรณ์แบบ
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
ยิ่งไปกว่านั้นฉันใช้ไลบรารี JS อื่นเพื่อสร้างเอาต์พุตที่เข้ารหัส base64 ของสตริงอินพุตเดียวกันผลลัพธ์จะมาโดยไม่มี \ n
นี่เป็นข้อบกพร่องหรืออย่างอื่นหรือไม่? มีใครเคยประสบปัญหานี้มาก่อนหรือไม่
FYI,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]