serialization - Ruby Marshal.dump gives different results for what looks like the same thing -
i'm seeing different results ruby's marshal.dump depending on if called .to_s on or typed in characters. i'm not clear on what's happening here: » marshal.dump(1.to_s) => "\x04\bi\"\x061\x06:\x06ef" » marshal.dump('1') => "\x04\bi\"\x061\x06:\x06et" » 1.to_s == '1' => true so although appears 1.to_s == '1' , don't dump out same thing, difference in last byte. ideas why happening , how can both things dump same byte sequence? marshal.load("\x04\bi\"\x061\x06:\x06ef").encoding # => #<encoding:us-ascii> marshal.load("\x04\bi\"\x061\x06:\x06et").encoding # => #<encoding:utf-8> by default, 1.to_s.encoding not same '1'.encoding . however, both strings in 7-bit ascii range, comparable, , '1' == 1.to_s able give result true , after internal magic. not same thing. marshal.dump(1.to_s.force_encoding('utf-8')) # =...