रूबी में इनबिल्ट बेस 64 लाइब्रेरी कुछ \ n का जोड़ रहा है। मैं इसका कारण जानने में असमर्थ हूं। इस विशेष उदाहरण के लिए:
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
इससे अधिक, मैंने उसी इनपुट स्ट्रिंग के बेस 64 एनकोडेड आउटपुट का उत्पादन करने के लिए एक और जेएस लाइब्रेरी का उपयोग किया, आउटपुट बिना \ n के आता है।
यह एक बग या कुछ और है? क्या पहले किसी ने इस मुद्दे का सामना किया है?
FYI करें,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]