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