From: "Pierre P." Date: 2012-02-11T00:11:37+09:00 Subject: Re: str.encode! sets valid_encoding even if resulting string is invalid (1.9.3) I'm observing the same problem. String#encode does not replace invalid chars when {:invalid => :replace} option is used nor raises Encoding::InvalidByteSequenceError when no option is set. irb(main):023:0> f = File.open("test/fixtures/files/text.txt") => # irb(main):024:0> f.binmode => # irb(main):025:0> s = f.read => "This is a very simple sample text.\nIn latin1 \xE9ncoding \n" irb(main):026:0> s.encoding => # irb(main):027:0> u = s.encode('UTF-8', 'UTF-8', :invalid => :replace, :undef => :replace) => "This is a very simple sample text.\nIn latin1 \xE9ncoding \n" irb(main):028:0> u.valid_encoding? => true irb(main):029:0> u.squeeze(" ") ArgumentError: invalid byte sequence in UTF-8 from (irb):29:in `squeeze' from (irb):29 from /usr/local/ruby/1.9.3-p0/bin/irb:12:in `
' -- Posted via http://www.ruby-forum.com/.