1
這是一個奇怪的問題。我有一個mashalled對象(cookie),這是一個包含2個已經被base64編碼的對象的數組。我解碼這個使用decode64和marshal.load它並得到陣列回來罰款。Ruby元帥模塊奇怪的問題
現在我把這個數組和marshal.dump它並將其與原始表示進行比較。這兩種編碼不匹配。字符串尾部的EF與第二個字符的ET。
奇怪的是,他們匹配,如果我使用irb。
紅寶石的相同版本。我錯過了什麼?
#!/usr/bin/env ruby -v
require "base64"
require "cgi"
cookie = "BAhbB2kHSSJFNThhYmY3ZjRiOWY0OTc4NjMxOTNhNTllMzQ1YjYxNTVlMGE2NTIzZDNjZmZmZDYxNWQwNTVhNmJkMzI0ZWIxYQY6BkVU"
p Marshal.load(Base64.decode64(cookie))
p Base64.decode64(cookie)
p Marshal.dump([2, "58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a"])
輸出:
ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.5.0]
[2, "58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a"]
"\x04\b[\ai\aI\"E58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a\x06:\x06ET"
"\x04\b[\ai\aI\"E58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a\x06:\x06EF"
IRB輸出:
ruby-1.9.2-p136 :001 > p Marshal.dump([2, "58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a"])
"\x04\b[\ai\aI\"E58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a\x06:\x06ET"
=> "\x04\b[\ai\aI\"E58abf7f4b9f497863193a59e345b6155e0a6523d3cfffd615d055a6bd324eb1a\x06:\x06ET"
可能要重新格式化您的文章一點點。 – 2011-01-14 19:49:23