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