Backport #6190
Updated by duerst (Martin Dürst) over 12 years ago
>> a = " \xE9 ".encode('UTF-8', 'UTF-8', :invalid => :replace, :replace => "?")
>> a.valid_encoding?
=> true
>> a
=> " \xE9 "
>> a.squeeze
ArgumentError: invalid byte sequence in UTF-8
from (irb):32:in `squeeze'
from (irb):32
from /usr/bin/irb:12:in `<main>'
The expected string is " ? ", as the documentation for the ":replace" options says :
If the value is :replace, encode replaces invalid byte sequences in str with the replacement character.