Returns a copy of +self+ with each invalid byte sequence replaced by the given +replacement_string+. With no block given and no argument, replaces each invalid sequence with the default replacement string ("�" for a Unicode encoding, '?' otherwise): s = "foo\x81\x81bar" s.scrub # => "foo��bar" With no block given and argument +replacement_string+ given, replaces each invalid sequence with that string: "foo\x81\x81bar".scrub('xyzzy') # => "fooxyzzyxyzzybar" With a block given, replaces each invalid sequence with the value of the block: "foo\x81\x81bar".scrub {|bytes| p bytes; 'XYZZY' } # => "fooXYZZYXYZZYbar" Output: "\x81" "\x81"