Here's a more concise summary of the bug. irb(main):001:0> RUBY_VERSION => "1.8.4" irb(main):002:0> a = "b2s=" => "b2s=" irb(main):003:0> b = "\xef\xbb\xbf" + a => "\357\273\277b2s=" irb(main):004:0> a.unpack("m") => ["ok"] irb(main):005:0> b.unpack("m") => ["\304\000\e\332"]