Issue #6190 has been reported by pplr (Pierre PLR).

----------------------------------------
Bug #6190: String#encode return string containing invalid chars but marked as valid
https://bugs.ruby-lang.org/issues/6190

Author: pplr (Pierre PLR)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]



 >> 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.



-- 
http://bugs.ruby-lang.org/