Returns a copy of +self+ with each invalid byte sequence replaced by the given +replacement_string+. With no block given, replaces each invalid sequence with the given +default_replacement_string+ (by default, "�" for a Unicode encoding, '?' otherwise): "foo\x81\x81bar"scrub # => "foo��bar" "foo\x81\x81bar".force_encoding('US-ASCII').scrub # => "foo??bar" "foo\x81\x81bar".scrub('xyzzy') # => "fooxyzzyxyzzybar" With a block given, calls the block with each invalid sequence, and replaces that sequence with the return value of the block: "foo\x81\x81bar".scrub {|sequence| p sequence; 'XYZZY' } # => "fooXYZZYXYZZYbar" Output : "\x81" "\x81" Related: see {Converting to New String}[rdoc-ref:String@Converting+to+New+String].